【问题标题】:collection hook not called on second application未在第二个应用程序上调用收集挂钩
【发布时间】:2016-12-12 02:22:34
【问题描述】:

我有一个使用 Meteor 1.4 编写的应用程序并在端口 3000(称为 A)上运行它,我知道我想在另一个应用程序(称为 B)中使用 A 应用程序数据库。在 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

如何解决?

【问题讨论】:

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


    【解决方案1】:

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

    如果你想根据底层 MongoDB 数据的变化在应用 B 中做某事,那么你想 observe 那个集合:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我需要在应用 B 中覆盖 after hook
      猜你喜欢
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2017-01-04
      • 2020-01-06
      • 1970-01-01
      相关资源
      最近更新 更多