流星中的观测者/钩子
Observers/hooks in Meteor
我有一些集合,它们通过ID与其他集合相关。
例如,我有集合Post
和Comments
。我想显示每个帖子的评论数量。因此,我在Post
中有一个字段,称为numComments
。每次插入或删除具有相同postId
的注释时,我都可以在一个方法中更新这个数字,但我会使用一些钩子/观测器来确保数字始终更新。
因此,我创建了一个包含内容的文件server/observers.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 } });
},
});
我喜欢这种解决方案,但这是一个好方法吗?
我的问题是,自从我实现了这个功能以来,控制台窗口会打印出大量的错误/警告。我怀疑这是因为观察员。
在文档中(http://docs.meteor.com/#/full/observe),上面写着:
observe返回一个实时查询句柄,它是一个带有stop方法的对象。不带参数的调用stop可以停止调用回调函数并删除查询。查询将永远运行,直到您调用此(..(
我不确定这意味着什么,但我认为观察员应该手动停止。
看看这个答案。它可能会引导你朝着正确的方向前进,因为这个例子与你想要的非常相似。你不需要在你的收藏中有一个专门的字段来对你的评论进行反应式计数,你可以在你的发布功能中构建它。
我不确定这意味着什么,但我认为观察员应该手动停止
你说得对。在上面链接的示例中,查询被封装在handle
变量中。注意
self.onStop(function () {
handle.stop();
});
它允许您确保在停止发布后不会有任何观察程序仍在运行。
相关文章:
- 预保存钩子:mongoose中回调的顺序如何
- 在淘汰赛中,我能得到可观测者的名字吗
- 摩卡“每个钩子之前”红色消息.我怎么知道具体出了什么问题
- 节点包中的“需要”钩子
- 什么是面框“钩子”
- 为node.js中的方法设置before/after钩子
- Meteor iron:路由器this.render()正在BeforeAction钩子中阻塞
- 猫鼬JS预保存钩子与引用值
- 如何让 Mocha 加载定义全局钩子或实用程序的帮助程序.js文件
- 如何使用jQuery更改钩子,括号
- 钩子 jQuery 验证消息更改
- 解析自定义网络钩子:我可以查询我的表吗?
- AngularJs 在动作钩子之前$http帖子
- JavaScript 全局键盘钩子
- (更改)角度 2 中的事件钩子
- 将公共钩子添加到 js 模式
- 如何在 jQuery UI 对话框按钮单击中提供钩子
- 如何在用户脚本中创建与评估函数的钩子
- 在 JavaScript 中为 document.location 创建钩子
- 流星中的观测者/钩子