如何同时保存两个彼此关联的模型?

时间:2019-01-08 13:29:09

标签: javascript node.js mongodb mongoose

我有一个控制器,该控制器应在2个模型上执行操作,其中第2个数据库模型必须包含第1个模型_id作为参考。

示例:

const model1 = await new firstModel(somedata).save();

const model2 = new secondModel({
    test: true //dummy
    referId: //this must contain the value of _id of model1
});

await model2.save()

我不想使用pre('save', ..)挂钩。有什么方法可以执行此操作?

1 个答案:

答案 0 :(得分:2)

将您自己的ObjectID _id字段预先分配给第一个模型的somedata,然后将其分配给第二个模型。

const ObjectId = require('mongodb').ObjectId;
const somedata = {
  _id: new ObjectId(),
  present: true //dummy
}
const model1 = await new firstModel(somedata).save();

const model2 = new secondModel({
    test: true //dummy
    referId: somedata._id
});

await model2.save()

_id键是可选的-如果未传递,则自动生成,如果传递给模型构造函数,则接受。