使用Cursor.observeChanges时取消初始化

时间:2014-01-15 05:05:37

标签: meteor

使用以下代码,将回显所有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。

2 个答案:

答案 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)

});