Javascript 对象键=值和对象集(键,值)之间的差异?
因此,在尝试更新mongoose中的文档时,我意识到当我对使用Javascript 对象键=值和对象集(键,值)之间的差异?,javascript,arrays,json,object,ecmascript-6,Javascript,Arrays,Json,Object,Ecmascript 6,因此,在尝试更新mongoose中的文档时,我意识到当我对使用Model.findOne()获得的文档执行obj.key=value操作时,它不会将属性分配给它的值。但是在尝试obj.set(key,value)之后,该属性被分配给文档中的值。那为什么呢?通常,当我对一个对象执行第一个方法时,该对象会获得属性。什么是.set()函数?这和猫鼬有关吗 //this works async function updateItem(){ let updatedItem = await
Model.findOne()
获得的文档执行obj.key=value
操作时,它不会将属性分配给它的值。但是在尝试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();
});
这意味着
updateItem
不是一个对象,而是一个对象,要向Map
添加项目,需要使用该方法
另一点需要指出的是,当您设置updateItem.elem[0]
时,您实际上是在尝试将键“elem[0]”
添加到updateItem
。要解决此问题,需要使用带方括号的动态属性表示法:
updatedItem[elem[0]] = elem[1];
这将生成一个值为
elem[0]
的新键,而不是elem[0]
的键。我不确定它是否与反应式编程相关,但下面是一个关于如何在Vuejs中工作的解释,我现在还不清楚。信息技术这是因为能手和二传手。谢谢你,谢谢你的帮助。现在我有了一个关于搜索的想法,尽管我不了解文档中的某些内容。实际上,我要问的问题与此无关,但它在尝试更新项目时打扰了我。在键入Item.findOne()
之前,它是Item.find()
,因此它返回了一个数组。我键入了updateItem[elem[0]]=elem[1]
,它返回类似于[{key:value,key:value,key:value},key:value},key:value]
的内容,但没有保存到数据库中。这个数组也是地图吗?@EyePatch,因为在一对方括号内有键值对,是的。