第二个应用程序没有调用集合钩子

时间:2016-12-11 09:19:54

标签: node.js mongodb meteor meteor-collections meteor-collection-hooks

我有一个用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

如何解决?

2 个答案:

答案 0 :(得分:1)

集合挂钩仅在进行更改的应用程序中运行。您的应用B钩子不会在应用A的变化下运行。

如果您想根据基础MongoDB数据的变化在应用B中执行某些操作,那么您希望observe该集合:

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

答案 1 :(得分:0)

你的钩子是相同的。显然,集合钩子每个事件只支持一个钩子。

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