gpt4 book ai didi

javascript - obj.key=value 和 obj.set(key, value) 之间的区别?

转载 作者:行者123 更新时间:2023-12-02 23:47:44 25 4
gpt4 key购买 nike

因此,在尝试更新 mongoose 中的文档时,我意识到当我对使用 Model.findOne() 获得的文档执行 obj.key=value 时,它不会将属性分配给它的值。但是在尝试 obj.set(key, value) 之后,该属性被分配给其在文档中的值。那么这是为什么呢?通常,当我对对象执行第一个方法时,该对象会获取该属性。 .set() 函数是什么?和 Mongoose 有关系吗?

//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();
});

最佳答案

这意味着 updatedItem 不是一个对象,而是一个 Map ,并且要将项目添加到Map,您需要使用 get方法。

另一件事需要指出的是,当您设置 updatedItem.elem[0] 时,您实际上是在尝试添加键 "elem[0 ]"updatedItem。要解决此问题,您需要使用带方括号的动态属性表示法:

updatedItem[elem[0]] = elem[1];

这将创建一个新键,其elem[0],而不是elem[0] .

关于javascript - obj.key=value 和 obj.set(key, value) 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55777934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com