muss ich sagen die obige Lösung zeigte mir eine Art und Weise, aber immer noch, was passiert, wenn ich Kundendaten veröffentlichen müssen, die mit beobachten nicht angeschlossen sind()? Oder mit irgendeiner Sammlung?
In meinem Fall habe ich d. H. 1000 Produkte. Um Besucher anzulocken, "erfrische" ich die Sammlung, indem ich den Zeitstempel einer zufälligen Anzahl von Produkten aktualisiere und die Sammlung nach Zeitstempel sortiert ansehe. Dank diesem Eindruck haben Besucher den Eindruck, dass etwas passiert.
Meine refresh
Methode gibt die Anzahl der Produkte zurück (es ist zufällig). Ich muss diese Nummer an alle Kunden weitergeben. Ich habe es getan, aber ich benutze (glaube ich) hässliche Problemumgehung.
Meine refresh
Methode setzt Session.set('lastRandomNo', random)
. BTW: Ich wusste nicht, dass Session auf Serverseite funktioniert. refresh
updates Produkte Sammlung.
accoriding Dann oben Antwort:
Meteor.publish 'refreshedProducts', ->
self = this
uuid = Meteor.uuid()
# create a new collection to pass ProductsMeta data
self.set('products_meta', uuid, { refreshedNo: 0 })
handle = Products.find().observe
changed: (newDocument, atIndex, oldDocument) ->
self.set('products_meta', uuid, { refreshedNo: Session.get('lastRandomNo') })
self.flush()
self.complete()
self.flush()
self.onStop ->
handle.stop()
und auf Client-Seite:
ProductsMeta = new Meteor.Collection('products_meta')
# subscribe to server 'products_meta' collection that is generated by server
Meteor.subscribe('refreshedProducts')
ProductsMeta.find({}).observe
changed: (newDocument, atIndex, oldDocument) ->
# I have access to refreshedNo by
console.log ProductsMeta.findOne().refreshedNo
Was denken Sie?
Es gibt einen neueren Beitrag mit detaillierten Antworten hier: http://stackoverflow.com/questions/18584757/ –