Javascript Meteor收听mongo数据库更新

Javascript Meteor收听mongo数据库更新,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我正在尝试创建一个与流星游戏。由于许多人告诉我使用mongo db(因为它是普通的、快速的和反应式的),我意识到,我需要“倾听”mongo db更新,以便能够响应收到的代码,并对DOM进行更改 我可以这样使用吗 collection.find({}).observe({ addedAt: function (document, atIndex, before) { handleEvent( document ); } }); var handle=Track

我正在尝试创建一个与流星游戏。由于许多人告诉我使用mongo db(因为它是普通的、快速的和反应式的),我意识到,我需要“倾听”mongo db更新,以便能够响应收到的代码,并对DOM进行更改

我可以这样使用吗

collection.find({}).observe({
  addedAt: function (document, atIndex, before) {
    handleEvent(
      document
    );
  }
});
var handle=Tracker.autorun(函数(){
扶手(
find({},{sort:{$natural:1},limit:1})//查找集合中的最后一个元素
);
});

您要查找的是游标的
观察
观察者更改
功能。请看这里:

您可以使用跟踪器,但我认为观察光标更具伸缩性

因为在您的示例中,您似乎只对响应最后添加的对象感兴趣,下面是一个框架,介绍如何使用
observeChanges

var cursor = Collection.find();
cursor.observeChanges({
    added: function(id, object) {
       // This code runs when a new object "object" was added to collection.
    }
});
cursor.observer()
似乎正是我想要的

我的决议如下:

collection.find({}).observe({
  addedAt: function (document, atIndex, before) {
    handleEvent(
      document
    );
  }
});
我意识到的唯一“问题”是,在测试过程中,事件似乎被触发了两次。(但htat可能会进入另一个线程。不久的某个时候)


(这(我想)是因为延迟补偿,对象被插入客户机数据库,然后服务器执行他的方法,然后将新集合发送到客户机,再次触发“添加”事件。对吗?

我认为Tracker.autorun只适用于客户机,所以代码可以在客户机上运行,而不能在服务器上运行。如果您想更新客户端集合,可以改为自动运行订阅

您要查找的是游标的
observe
obserchanges
函数。请看这里:您可以使用跟踪器,但我认为观察光标更具可伸缩性。看来我的回答有点晚了。但还是要谢谢你!