问题听起来很愚蠢,但我无法找到问题的明确答案。我知道订阅出版物会使数据可供客户使用。
所以我想了解的是数据何时下载到Minimongo。客户是否在订阅后立即下载出版物中的所有数据? 或者(这会更有意义),客户端只在他开始查询数据时才下载数据。我的术语可能是,为此道歉。但也许一些代码使它更清晰。以下所有内容都是在客户端运行的代码。
订阅:
const eventSub = Meteor.subscribe('getEvents');
const loading = !eventSub.ready();
查询:
const fin = {_id:someid};
const eventData = loading ? null : Events.find(fin).fetch()[0]
答案 0 :(得分:1)
当客户端订阅发布时,它会向服务器发送请求订阅的消息。这将调用处理程序(您定义的发布函数并提供给Meteor.publish
,在您的情况下),它可以返回一个Mongo游标,游标数组或自己处理发布的低级细节。
如果函数返回游标,服务器会观察它并尽快发送有关数据的消息。首先,所有匹配的文档都以added
消息的形式发送给客户端,这些消息会自动转换为MiniMongo中的文档。
当服务器注意到它们时,服务器游标观察者会发送稍后的更改。
ready
是服务器发送的另一条消息,它告诉客户端服务器已经发送了它当时的任何消息。
这意味着数据会立即(或至少是ASAP)发送到客户端,但不会同步发送到客户端,而不会发送到单个消息中。
反应计算(使用Tracker
)可用于订阅,获取订阅的就绪状态并根据需要查询数据,因为该对象的ready()
方法为&# 34;反应"