在我的数据库中,有时候我需要为要添加的文档添加一个字段,我使用了{strict: false}
在我的模式中是这样的:
const mySchema = mongoose.Schema({name: String, description: String}, { strict: false });
,并且可以很好地与添加一起使用,但是在获取要具有此新值的记录时出现了问题,我无法使用此字段并且显示未定义,这是一个示例:
让我说这样的记录:
myModul.insertMany([{name: 'test', description: 'test description', auto: true}], (error, docs) {});
并且由于{ strict: false }
的原因而被添加
现在,当我想获取该记录时,我将使用此记录:
myModul.findOne({name: "test"}, (err, found)=>{
console.log(found);
console.log(found.auto);
});
第一个console.log显示记录中的字段,但是当我要记录或专门使用该字段时,它表示未定义
答案 0 :(得分:0)
从猫鼬的角度来看,如果要获取不在架构中的字段,则必须执行instance.set
和instance.get
。这是一个示例:
let func = async () => {
let instance = new Model()
instance.fieldOne = 'abc'
instance.set('fieldTwo', 'def')
await instance.save()
let instance2 = await Model.findOne({_id: instance._id})
console.log(instance2.fieldOne)
console.log(instance2.get('fieldTwo'))
// Has `fieldTwo`
console.log(instance2.toObject())
}
您可以结帐更多here
因此,您的情况将是:
myModul.findOne({name: "test"}, (err, found)=>{
console.log(found);
console.log(found.get('auto'));
});