Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose:如何用一组子文档(一个唯一字段)构造模式?_Node.js_Mongoose_Upsert - Fatal编程技术网

Node.js Mongoose:如何用一组子文档(一个唯一字段)构造模式?

Node.js Mongoose:如何用一组子文档(一个唯一字段)构造模式?,node.js,mongoose,upsert,Node.js,Mongoose,Upsert,我正在尝试使以下模式正常工作: var FormSchema = new mongoose.Schema({ form_code: { type: String, unique: true }, ... }); var UserSchema = new mongoose.Schema({ ... submissions: [{ form_code: { type: String, unique: true }, last_updat

我正在尝试使以下模式正常工作:

var FormSchema = new mongoose.Schema({
    form_code: { type: String, unique: true },
    ...
});
var UserSchema = new mongoose.Schema({
    ...
    submissions: [{
        form_code: { type: String, unique: true },
        last_update: Date,
        questions: [{
            question_code: String,
            answers: [Number]
        }]
    }],
});
这里的基本原理是,用户可以提交许多独特的表单,但只应保存每个独特表单的最后一次提交。因此,理想情况下,通过在更新用户时推送提交子文档,模式将要么将提交对象添加到集合中,要么更新包含该表单代码的子文档

以下代码无法按预期工作,即使表单_代码已经存在,也会推送新的子文档:

User.findOneAndUpdate(
    { _id: user.id },
    { $addToSet: { submissions: submission_object } },
    function (err, user) {
        // will eventually have duplicates of form_code at user.submissions
    }
);
上面的模式显然不起作用,必须改变什么才能达到这个目的