用mongoose添加不在模式中的字段

我正在尝试向文档中添加一个新字段,但这不起作用:

创建我的UserModel原型:

model = require("../models/user")

UserModel.prototype.findOneAndUpdate = function(query, params, cb) {

model.findOneAndUpdate(query, params, { returnNewDocument: true, new: true }, function(err, data) {

if (!err) {

cb(false, data);

} else {

cb(err, false);

}

});

};

然后叫它

userFunc = require("../../model_functions/user")

userFunc.findOneAndUpdate({

"email.value": userEmail

}, {

$set: {"wat":"tf"}

},

function (err, updatedUser) {

//This logs the updated user just fine, but the new field

is missing

console.log(updatedUser);

...

}

);

只要存在,此字段便会成功更新,但不会添加任何新字段。

回答:

您可以使用选项在架构中添加和删除字段 { strict: false }

严格选项(默认情况下启用)可确保传递给我们的模型构造函数的未在架构中指定的值不会保存到数据库中。

var thingSchema = new Schema({..}, { strict: false });

您也可以在更新查询中执行此操作

Model.findOneAndUpdate(

query, //filter

update, //data to update

{ //options

returnNewDocument: true,

new: true,

strict: false

}

)

您可以在这里查看文档

以上是 用mongoose添加不在模式中的字段 的全部内容, 来源链接: utcz.com/qa/410032.html

回到顶部