【问题标题】:Meteor Collection-hooks not working for external DB modificationsMeteor Collection-hooks 不适用于外部数据库修改
【发布时间】:2018-03-11 17:04:58
【问题描述】:

我周围散落着一堆传感器。

这些传感器在检测到环境变化时会传输其状态。

数据进入服务器(使用 Java 构建),在那里它处理该信息,然后将其插入 mongoDB。

我的流星应用程序本质上是此信息的仪表板。我想在这些条目进入后立即对其进行进一步处理(分析)。

我开始使用 Collection-Hooks,当 Meteor 应用程序对数据库进行更改时效果非常好,但在 mongo Java-Driver 进行更改时效果不佳。

我需要收集挂钩来检测从 Java 驱动程序添加到我的 mongoDB 的新文档。我也没有与收集挂钩结婚,欢迎提出任何其他服务。

【问题讨论】:

    标签: java mongodb meteor meteor-collection-hooks


    【解决方案1】:

    您要使用的是从查询返回的游标上的观察者: https://docs.meteor.com/api/collections.html#Mongo-Cursor-observe

    myCollection.find().observe({
      added(document) {
        // Do something with new document
      },
      changed(document) {
        // Update analytics in response to change
      },
      removed(oldDocument) {
        // Update analytics in response to change
      }
    });
    

    这将取决于实际数据库的内容,不像集合钩子只在调用 Meteor 代码时操作

    还值得注意的是,这些钩子还跟踪传递给find() 的特定查询。因此,如果您只想为特定的数据子集调用这些钩子,请像下面这样从@scriptkid 传递查询:

    var date = moment().utc().format("YYYY-MM-DD HH:mm:ss.SSS"); 
    log.find({ createdAt: { $gte: date } }).observe({
      added(document) { 
        console.log("new document added!"); 
      }, 
    }); 
    

    【讨论】:

    • 男人是一段性感的代码,你挑衅地将我引向了正确的方向。只是给登陆这里的任何人的注释,上面的代码通过 find() 并返回所有文档。您可能想添加如下内容:var date = moment().utc().format("YYYY-MM-DD HH:mm:ss.SSS"); log.find({createdAt : { $gte: date } }).observe({ added(document) { console.log("new document added!"); }, }); 仅检测在执行此代码后添加的文档
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 2017-05-12
    • 2012-03-18
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多