无法向Mongoose的对象响应添加新密钥

问题描述 投票:2回答:3

我有这个问题,我无法理解为什么。在for循环中,我尝试为一个对象数组中的每个对象分配一个新的键值对,来自mongoose查询的响应。例如

    obj = {
      value1: "someValue",
      value2: [],
      value3: {}
      value4: {
        id: "someId"
      }
   }

如果我尝试做一个obj.value4.newKey =“newValue”似乎没有任何事情发生,但问题是当我做的时候

console.log(obj.value4.newKey) // prints "newValue"

但是当我这样做的时候

console.log(obj) 

要么

console.log(obj.value4)

之前添加的新密钥似乎不存在

javascript object key add
3个回答
3
投票

我真的不知道为什么,但我找到了某种解决方法,这是有效的(继续第一个例子)

res = JSON.parse(JSON.stringify(obj.value4));
res.newKey = "newValue";

现在我做

console.log(res)

我明白了

{
  id: "someId",
  newKey = "newValue"
}    

有任何想法吗 ?


0
投票

您的代码中有错误:

obj = {
      value1: "someValue",
      value2: [],
      value3: {} // , is missing
      value4: {
        id: "someId"
      }
   }

而你期待的是为我工作See it in Action


0
投票

你的代码完美无缺(在修复了丢失的逗号错误之后) - 在你的控制台打开的情况下尝试它,你会看到newKey中的value4值正如你所期望的那样添加:

obj = {
    value1: "someValue",
    value2: [],
    value3: {},
    value4: {
        id: "someId"
    }
};

obj.value4.newKey = "newValue";
console.log(obj);

任何错误都不是您发布的代码的问题,而是周围的代码。你能发布一个完整的,可执行的失败示例吗?

© www.soinside.com 2019 - 2024. All rights reserved.