第二个应用程序未调用收集挂钩

collection hook not called on second application

我有一个用 Meteor 1.4 编写的应用程序,运行 它在端口 3000(称为 A)上知道我想在另一个应用程序(称为 B)中使用应用程序数据库。在 B 控制台中,我这样设置 MONGO_URL:

export MONGO_URL=mongodb://localhost:3001/meteor

然后 运行 在端口 5000 上。 我在应用程序 A 上有一些 collection hook,在应用程序 B 上也有一些收集挂钩,但挂钩仅在应用程序 A 中调用。

例如在 A 中我们有:

collections.notes.after.update(function(userId, doc, fieldNames, modifier, options) {
    console.log("notes updated in A hook");
    console.log(doc);
}

在 B 中我们有:

collections.notes.after.update(function(userId, doc, fieldNames, modifier, options) {
    console.log("notes updated in B hook");
    console.log(doc);
}

但它只是日志 notes updated in A hook

如何解决?

你的钩子是一样的。显然,收集挂钩每个事件只支持一个挂钩。

为什么要两个相同的回调?

收集挂钩 运行 仅在进行更改的应用程序中。您的应用程序 B 挂钩不会 运行 从应用程序 A 更改。

如果您想根据底层 MongoDB 数据更改在应用程序 B 中执行某些操作,那么您需要 observe 该集合:

collections.notes.find().observe({
  changed(newDocument, oldDocument){
    console.log('Notes changed! Old doc: '+oldDocument+' to '+newDocument);
  }
});