我有一个出版物,其范围取决于另一个集合中的元素属性。基本上它在服务器上看起来像这样:
Meteor.publish('kids', function (parent) {
return Kids.find({ _id: { $in: parent.childrenIds } });
}
在上面的示例中,parent.childrenIds
是一个数组,其中包含作为父母的孩子的所有孩子的 _id。这工作正常,直到我想向父母添加一个新的孩子:
newKidId = Kids.insert({ name: 'Joe' });
Parents.update({ _id: parentId }, { $push: { childrenIds: newKidId } });
这适用于集合的服务器Kids
(即添加了新孩子),并childrenIds
使用newKidId
. 但它不会更新上述“儿童”出版物(光标未更新/修改)。结果,客户端的Kids
集合没有更新(看起来更改Kids
在客户端上回滚了)。
当客户端刷新时,所有发布都停止/重新启动,新孩子(乔)最终发布到客户端。
有没有办法避免刷新客户并强制重新发布Kids
集合(理想情况下只将新孩子乔发送给客户)?