Javascript 无法将属性添加到mongoose文档

Javascript 无法将属性添加到mongoose文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有一个猫鼬模型,它有一些属性,并且strict选项设置为false。我从该模型创建了一个空文档,并希望向其添加属性。模式中定义的将被添加到对象中,而未定义的将不会 let mySchema = new mongoose.Schema({definedInSchema: {type: boolean}}, {strict: false}); const myModel = mongoose.model('name', mySchema); let properties = { define

我有一个猫鼬模型,它有一些属性,并且strict选项设置为false。我从该模型创建了一个空文档,并希望向其添加属性。模式中定义的将被添加到对象中,而未定义的将不会

let mySchema = new mongoose.Schema({definedInSchema: {type: boolean}}, {strict: false});
const myModel = mongoose.model('name', mySchema);
let properties = {
   definedInSchema: true,
   undefinedInSchema: true
};
let myDocument = new myModel();
for (let i in properties)
   myDocument[i] = properties[i];
console.log(myDocument);
//output: the object myDocument doesn't have the property that wasn't defined in the schema.

这里怎么了?

模型实例不仅仅是一个简单的javascript对象,还有一个内部的
\u doc
,用于跟踪每个字段的值。Getter和setter函数是为模式中定义的字段自动创建的,并且在实例化模型时添加字段,如

const thing = new Thing({ iAmNotInTheSchema: true });
请注意,这是文档显示的模式中没有字段的方式

如果像这样创建文档,
undefinedInSchema
将以正常方式访问:

let myDocument = new myModel(properties);
如果创建对象后确实需要其他字段,则需要显式调用
set
,如

for (let i in properties)
    myDocument.set(i, properties[i]);