繁体   English   中英

无法将属性添加到 mongoose 文档

[英]Cannot add property to mongoose document

我有一个 mongoose model 有一些属性和严格选项设置为 false。 我从此 model 创建了一个空文档,我想向它添加属性。 架构中定义的那些将被添加到 object 中,而未定义的则不会。

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.

这里有什么问题?

model 实例不仅仅是一个简单的 javascript object,还有一个内部_doc用于跟踪每个字段的值。 为模式中定义的字段自动创建 getter 和 setter 函数,并在 model 实例化时添加字段,例如

const thing = new Thing({ iAmNotInTheSchema: true });

请注意,这是文档显示字段不在架构中的方式。

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

let myDocument = new myModel(properties);

如果在创建 object 之后确实需要其他字段,则需要显式调用set ,例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM