【问题标题】:How to wait observer call after Mongo insert on Meteor ServerMongo在Meteor Server上插入后如何等待观察者调用
【发布时间】:2020-03-08 01:05:27
【问题描述】:

我想,当我插入 Mongo 时,Meteor 的 Fiber 魔法会等待/阻塞,直到数据库确认写入,但直到调用观察者。有没有办法等他们?

我在服务器代码中插入数据,并且我有一个缓存层,它观察集合上添加的事件并从中转换 ObjectModel 实例:

class CachingService {
  attachObservers() {
    this.collection.observe({
      added: models => this.added(models)
    })
  }
}
const id = Placements.insert({...})
console.log(`Inserted ${id} -`, CachingServices.Placements.getByID(id), Placements.getByID(id, false))

将打印:

插入的 ... - 未定义,{...}

即CachingService 尚未收到插入,但数据库收到了。

【问题讨论】:

  • 你是在 Meteor 方法内部还是外部执行插入?

标签: meteor node-fibers


【解决方案1】:

也许尝试在集合游标上注入 observe 属性而不是实例(即 testCollection.find().observe )。


Meteor.startup(() => {

  const testCollection = new Mongo.Collection("testCollection");

  testCollection.find().observe({
  added: function(document) {
    console.log("groups observe added value function");
    console.log(document);
  }
});

  testCollection.insert({ foo: 'bar' });
})

其他有用的问题: Meteor collection observe changes rightly cursor.observe({added}) behavior in Meteor

【讨论】:

  • 我们已经在观察光标了。这是流星支持这样做的唯一方式。您链接的其他问题涉及现有模型的观察事件 - 但我们已经处理了。
猜你喜欢
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
相关资源
最近更新 更多