Можем ли мы использовать обратные вызовы в оболочке Монго? - PullRequest
0 голосов
/ 08 мая 2019

Я хочу вставить один документ в collection1, и после успешной вставки документа я хочу вставить другой документ в collection2. Одним из полей для документа в collection2 будет _id документа, только что вставленного в collection1.

Я использую обратный вызов:

db.collection1.insert(<document>,function(err,doc)){
     db.collection2.insert({collection1_id: doc[0]._id, <field>:<value>})

Однако кажется, что обратный вызов недоступен без Node.js.

Есть ли обходной путь?

1 Ответ

0 голосов
/ 09 мая 2019

Обратные вызовы являются частью асинхронного API-интерфейса Node.js и не поддерживаются в оболочке mongo (как в MongoDB 4.0).Однако вы всегда можете написать эквивалент без обратных вызовов.

Метод 1006 * оболочки mongo вернет поле insertedId со значением _id вставленного документа,так что вы можете сохранить или ссылаться на это значение.

Например:

db.collection2.insertOne({
    collection1_id: db.collection1.insertOne({}).insertedId,
    field: 'value'
})
...