流星客户端mongodb改变

时间:2016-06-09 04:08:19

标签: meteor

Meteor服务器会导致集合更新,该更新还会更新集合的客户端副本 有没有办法在集合的客户端副本中的记录更新时调用客户端函数?感谢

//server
Meteor.users.update({
      _id: Meteor.userId()
    }, {
      $set: {
        'profile.goAhead': true
      });

    //client
    if (Meteor.user().profile.goAhead) {
      myFunc();
    }

2 个答案:

答案 0 :(得分:0)

Meteor有乐观的更新。客户端副本首先更新。然后在方便的时候,更新服务器集合。如果服务器更新存在任何问题,则会回滚或使用不同的值更新客户端副本。

在上面的代码中,服务器更新应该包含在Meteor.methods()中。从客户端调用服务器方法有一个回调方法,可以在这种情况下使用。

答案 1 :(得分:0)

您需要.observeChanges()

let query = MyCollections.find();
query.observeChanges({
  added(id,fields){
    console.log("Document added with _id "+id);
  },
  changed(id,fields){
    console.log("Document with _id "+id+" was changed");
  },
  // ... there are more possible callbacks
});