Как передать ObjectID в качестве параметра запроса в node-red в mongodb? - PullRequest
0 голосов
/ 24 марта 2019

Я использую node-red-contrib-monggodb3 и испытываю проблемы с передачей ObjectId в качестве аргумента, не имея возможности использовать автоматически сгенерированный _id MongoDB, есть ли способ использовать "_id": 'ObjectId (" myID ") 'в качестве аргумента?

Я следовал инструкциям модуля по передаче параметров запроса node-red-contrib

т.е. У меня есть следующий документ в моей коллекции:

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

Если я передаю как msg.payload, чтобы найти одну операцию

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

возвращает мой документ без ObjectID в _id

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

если я передам _id как агмент:

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

возвращается пустым. Я не могу вызвать ObjectId в node-red, а также не могу передать как строку ObjectId.

Интересно, есть ли способ передать ObjectId в качестве аргумента

Это ошибка или я что-то упустил?

1 Ответ

0 голосов
/ 24 марта 2019

Я решил использовать в качестве параметра возврат функции ObjectId в модуле узла 'mongodb', но чтобы использовать модули узла внутри узла функции, необходимо импортировать его в глобальный контекст внутри вашей директории красный-узел. на окнах:

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, а также сделать ненужным перезапуск процесса для добавления будущих модулей.

А внутри узла функции я просто передал полезную нагрузку следующим образом.

var ObjectId = global.get('ObjectId');

msg.payload={
    "_id":ObjectId("5c9156c7f8c3ec3259454571")
};

return msg;
...