使用以下代码,将回显所有10条现有记录。但是我希望observeChanges
只打印出新记录。
如何做到这一点?为什么它会返回查询中的所有现有文档?
插入新文档时,也不会执行 added
。除非我们删除limit
运算符。
server.js
var query = myCollection.find({}, {limit: 10})
query.observeChanges({
_suppress_initial: true,
added: function (id, fields) {
console.log('doc added')
}
})
使用Meteor 0.7.0.1。
答案 0 :(得分:4)
oplog尾部阶段的新流星版本(0.7及更高版本)不再支持_suppress_initial。简要提及change here,它可能会以某种形式出现。
更新:如果您希望在将新内容插入“myCollection”时将日志记录到控制台,那么这将有效:
var query = myCollection.find({}); //find everything in collection currently
var init = true;
query.observeChanges({
added: function (id, fields) {
if ( ! init)
console.log('doc added');
}
});
init = false;
有了限制,如果集合以超过10个文档开头,则光标将继续查找相同的10个原始文档,因此当集合通过插入光标而增长时,不需要超过10个文档。
答案 1 :(得分:1)
避免初始加载多次触发添加功能的好方法是去抖动 使用下划线:
query.observeChanges({
added: _.debounce(function(id, fields) {
// Do something
}, 100)
});