devo dire che la soluzione di cui sopra mi ha mostrato un modo, ma ancora, cosa succede se ho bisogno di pubblicare i dati del cliente che non sono collegati con osservare()? O con qualsiasi collezione?
Nel mio caso ho 1000 prodotti. Per coinvolgere i visitatori, sto aggiornando la raccolta aggiornando il timestamp del numero casuale di prodotti e visualizzando la raccolta ordinata per data/ora. Grazie a questo, i visitatori hanno l'impressione che stia succedendo qualcosa.
Il mio metodo refresh
restituisce il numero di prodotti (è casuale). Devo passare quel numero a tutti i clienti. L'ho fatto, ma usando (credo) una brutta soluzione.
I miei set di metodi refresh
Session.set('lastRandomNo', random)
. BTW: non sapevo che Session funzionasse dal lato server. refresh
aggiornamenti Raccolta prodotti.
Poi accoriding alla risposta di cui sopra:
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()
e sul lato client:
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
Cosa ne pensi?
C'è un post più recente con risposte dettagliate qui: http://stackoverflow.com/questions/18584757/ –