在相同模型实例中调用保存功能时,在相关数据推送上猫鼬“无法多次并行保存()同一文档”

时间:2018-11-23 10:06:12

标签: javascript node.js mongodb express mongoose

基本上,我有两个具有一对多关系的集合问题答案,我正在尝试填充这些相关集合的数据。

一旦问题被保存,我将尝试保存与该问题相关的多个答案。 这是我编写的用于添加多个答案的代码(其中答案是内部包含对象的数组)。

let question = await Question.findOne({_id: question_id});
    //Here answer is a array containing objects
    answers.forEach(async function (answer, i) {

        let newAnswer = new Answer({
            question: question._id,
            answers: answer.ans,
        });
        await newAnswer.save();

        await question.answers.push(newAnswer);
        await question.save();
    });

但是此代码仅保存对问题集合的一个引用并引发错误

“无法同时多次保存()同一文档。文档:5bf7cb66f4f14a5bb6a2bf6c {“ name”:“ ParallelSaveError”}“

请帮助我找出解决此问题的正确方法。

这是模型

const questionSchema = mongoose.Schema({
    question: {
        type: String,
        required: true,
        unique: true
    },
    answers: [{type: mongoose.Schema.ObjectId, ref: 'Answer'}]
});

const answerSchema = mongoose.Schema({
    question: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Question'
    },
    answers: {
        type: String,
        required: true
    }
});

0 个答案:

没有答案