因此,当尝试用猫鼬更新文档时,我意识到,对通过obj.key=value
获取的文档执行Model.findOne()
时,它并没有将属性分配为其值。但是在尝试obj.set(key,value)之后,将该属性分配给文档中的其值。那为什么呢?通常,当我对某个对象执行第一种方法时,该对象会获得属性。 .set()
函数是什么?它和猫鼬有关吗?
//this works
async function updateItem(){
let updatedItem = await Item.findOne({name:req.body.itemName});
Object.entries(req.body).forEach(elem=>{
if(elem[0]!=="itemName"){
updatedItem.set(elem[0], elem[1]);
};
});
};
updateItem();
});
//this doesn't work
async function updateItem(){
let updatedItem = await Item.findOne({name:req.body.itemName});
Object.entries(req.body).forEach(elem=>{
if(elem[0]!=="itemName"){
updatedItem.elem[0] = elem[1];
};
});
};
updateItem();
});