Javascript 流星中的观测者/钩子
我有一些通过ID与其他人相关的收藏 例如,我有收藏Javascript 流星中的观测者/钩子,javascript,node.js,mongodb,meteor,Javascript,Node.js,Mongodb,Meteor,我有一些通过ID与其他人相关的收藏 例如,我有收藏Post和Comments。我想显示每个帖子的评论数。因此,我在Post中有一个名为numComments的字段。每次插入或删除具有相同postId的注释时,我都可以用一种方法更新此编号,但我将使用一些挂钩/观察者来确保编号始终更新 因此,我创建了一个包含内容的文件server/observators.js Comments.find().observe({ added: function(document) { Posts.upda
Post
和Comments
。我想显示每个帖子的评论数。因此,我在Post
中有一个名为numComments
的字段。每次插入或删除具有相同postId
的注释时,我都可以用一种方法更新此编号,但我将使用一些挂钩/观察者来确保编号始终更新
因此,我创建了一个包含内容的文件server/observators.js
Comments.find().observe({
added: function(document) {
Posts.update({ postId: document.postId }, { $inc: { numComments: 1 } });
},
changed: function(document) {
},
removed: function(document) {
Posts.update({ postId: document.postId }, { $inc: { numComments: -1 } });
},
});
我喜欢这种解决方案,但这是一种好方法吗
我的问题是,自从我实现了这个功能后,控制台窗口会打印出大量错误/警告。我怀疑这是因为观察员
在文档()中,它说:
observe返回一个实时查询句柄,该句柄是一个带有stop方法的对象。不带参数调用stop以停止调用回调函数并终止查询。查询将永远运行,直到调用此(..)
我不知道这意味着什么,但我认为应该手动停止观察者。。它可能会引导您走向正确的方向,因为示例与您想要的非常相似。您不需要在集合中使用专用字段来获得评论的反应性计数,您可以在发布功能中构建它
我不知道这意味着什么,但我认为观察员应该这样做
手动停止
你说得对。在上面链接的示例中,查询被包装在句柄
变量中。注意
self.onStop(function () {
handle.stop();
});
它允许您确保停止发布后,不会有任何观察者仍在运行。有什么错误?@Morten您不想在需要挂钩时使用观察者。请看答案。