【问题标题】:How to pass ObjectID as query parameter in node-red to mongodb?如何将 ObjectID 作为 node-red 中的查询参数传递给 mongodb?
【发布时间】:2019-08-14 22:51:36
【问题描述】:

我正在使用node-red-contrib-mongodb3 并且无法将 ObjectId 作为参数传递,无法使用 MongoDB 自动生成的 _id,有什么方法可以使用 "_id": 'ObjectId("myID")'作为论据?

我已经按照模块教程传递查询参数node-red-contrib

这是一个例子:

我的收藏中有以下文档:

{
    "_id" : ObjectId("5c9156c7f8c3ec3259454571"),
    "name" : "teste_site_1",
}

如果我作为 msg.payload 传递给 findOne 操作

msg.payload = { "name" : "teste_site_1" }

在 _id 中返回没有 ObjectID 的文档

{
    "_id" : "5c9156c7f8c3ec3259454571",
    "name" : "teste_site_1",
}

如果我将 _id 作为参数传递:

msg.payload = { "_id" : "5c9156c7f8c3ec3259454571" }

返回空。

我不能在 node-red 中调用 ObjectId,也不能作为字符串 ObjectId 传递。

我想知道是否已经有一种方法可以将 ObjectId 作为参数传递。 这是一个错误还是我错过了什么?

【问题讨论】:

    标签: node.js mongodb node-red


    【解决方案1】:

    我已经通过在“mongodb”节点模块中使用 ObjectId 函数的返回作为参数来解决,但是为了在函数节点中使用节点模块,必须将它导入到 node-red 目录中的全局上下文中。 在窗户上:

    C:\\users\username\.node-red\settings.js
    

    在 Ubuntu 中

    ~\.node-red\settings.js
    

    并将 ObjectId 包含为全局导入

    functionGlobalContext: {
            require: require, // Not mandatory
            ObjectId : require('mongodb').ObjectID,
    },
    

    我还包含了 'require' 模块,因为有些人可能会发现不要弄乱 settings.js 很有用,并且不需要重新启动进程来添加未来的模块。

    在函数节点内部,我只是传递了payload,如下所示。

    var ObjectId = global.get('ObjectId');
    
    msg.payload={
        "_id":ObjectId("5c9156c7f8c3ec3259454571")
    };
    
    return msg;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2017-08-01
      • 2023-03-06
      • 2018-09-30
      • 2017-03-08
      • 1970-01-01
      • 2019-09-11
      相关资源
      最近更新 更多