Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象键=值和对象集(键,值)之间的差异?_Javascript_Arrays_Json_Object_Ecmascript 6 - Fatal编程技术网

Javascript 对象键=值和对象集(键,值)之间的差异?

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

因此,在尝试更新mongoose中的文档时,我意识到当我对使用
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,因为在一对方括号内有键值对,是的。