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

时间:2015-05-28 14:49:14

标签: javascript object key add

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

    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)

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

4 个答案:

答案 0 :(得分:3)

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

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

现在我做了

console.log(res)

我得到了

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

任何想法?

答案 1 :(得分:0)

您的代码中有错误:

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

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

答案 2 :(得分:0)

您的代码完美无缺(在修复丢失的逗号错误之后) - 在控制台打开的情况下尝试此操作,您会看到newKeyvalue4的值被添加为您预计有:

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

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

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

答案 3 :(得分:0)

我认为这是因为猫鼬返回了猫鼬模型对象(请看截图):

mongoose object screenshot