Tôi phải nói giải pháp trên cho tôi thấy một cách, nhưng vẫn còn, nếu tôi cần xuất bản cho dữ liệu khách hàng không được kết nối với quan sát()? Hoặc với bất kỳ bộ sưu tập nào?
Trong trường hợp của tôi, tôi có 1.000 sản phẩm. Để thu hút khách truy cập, tôi đang "refreshig" bộ sưu tập bằng cách cập nhật dấu thời gian của số lượng sản phẩm ngẫu nhiên và hiển thị bộ sưu tập được sắp xếp theo dấu thời gian. Cảm ơn khách truy cập này có ấn tượng rằng có điều gì đó đang xảy ra.
Phương thức refresh
của tôi trả về số lượng sản phẩm (nó là ngẫu nhiên). Tôi cần chuyển số đó cho tất cả khách hàng. Tôi đã làm nó, nhưng sử dụng (tôi nghĩ) workaround xấu xí.
My refresh
phương thức đặt Session.set('lastRandomNo', random)
. BTW: Tôi không biết rằng phiên làm việc trên phía máy chủ. refresh
cập nhật Bộ sưu tập sản phẩm.
Sau đó accoriding để trả lời ở trên:
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()
và đứng về phía khách hàng:
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
Bạn nghĩ gì?
Có một bài đăng mới hơn với các câu trả lời chi tiết tại đây: http://stackoverflow.com/questions/18584757/ –