在节点路线中,我保存了两个不同模型的文档,但不是按照代码中的顺序保存(通过自上而下的方法),它们将以相反的顺序保存。 / p>
modelOneDoc.save().then((doc) => console.log('Model One Document saved'));
modelTwoDoc.save().then((doc) => console.log('Model Two Document saved'));
输出:
Model Two Document saved
Model One Document saved
两个模型的模式都附加了pre save call,在保存文档之前会进行一些计算。而且我认为它的前调用会扰乱储蓄令。
在ModelTwoDoc之前保存ModelOneDoc是必不可少的,因为ModelTwoDoc在其预保存调用中获取ModelOneDoc。 帮我解决问题。
GitHub Repo here(路线:/ exam / submit /:id)
修改 代码片段如下:
request.body.questionAnswers.forEach((element, index) => {
var questionAnswer = new QuestionAnswer({exam: id});
examReturn.questionAnswers.push(questionAnswer._id);
questionAnswer.save().catch((error) => console.log(error));
});
examReturn.save().then(() => response.send('Exam Successfully submitted in Store'), (error) => response.status(400).send(error));
我在循环中有第一次保存调用,我希望在循环中的所有文档都有第二次调用(examReturn.save())之后已存储。
我无法使用嵌套模型的解决方案,然后在此处调用,因为第二个模型将首先保存,然后调用已加载的文档。
很抱歉提前提供的数据不足。
答案 0 :(得分:0)
如果save
函数是异步的,则必须将第二个模型保存在第一个模型的函数中:
modelOneDoc.save().then(function(doc) {
console.log('Model One Document saved')
modelTwoDoc.save().then(function(doc) {console.log('Model Two Document saved')})
})
这样,第二个模型将在第一个模型之后保存。