我有这个问题,我无法理解为什么。 在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)
之前添加的新密钥似乎不存在
答案 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)
您的代码完美无缺(在修复丢失的逗号错误之后) - 在控制台打开的情况下尝试此操作,您会看到newKey
中value4
的值被添加为您预计有:
obj = {
value1: "someValue",
value2: [],
value3: {},
value4: {
id: "someId"
}
};
obj.value4.newKey = "newValue";
console.log(obj);
任何错误都不是您发布的代码的问题,而是周围的代码。你能发布一个完整的,可执行的失败示例吗?
答案 3 :(得分:0)
我认为这是因为猫鼬返回了猫鼬模型对象(请看截图):