通常我会这样做:
var res = {};
res = { _id: 'test@tester.com',
password: 'ABCDEF',
phone: '123123123',
name: 'Torben Tester',
userLog: [
{ date: 1510561026, text: 'was CREATED' },
{ date: 1510593431, text: 'was UPDATED' }
]
}
res.foo = "bar";
delete res.password
delete res.userLog
我最终会:
{ _id: 'test@tester.com',
phone: '123123123',
name: 'Torben Tester',
foo: 'bar'
}
但是......如果我从MongoDB获得记录
usersTable.findOne (
{ _id: 'test@tester.com' }
,function (err, data) {
res = data
}
然后res仍然与之前完全相同
但没有一项修改工作
res.foo = "bar";
delete res.password
delete res.userLog
绝对没有。他们不会返回任何错误,res
之前和之后保持不变。
我错过了什么?当来自mongodb时,res
是否有可能属于不同的类型? (不是它不是一个数组,我已经检查过了)
在执行console.log(res)
时,两种情况下的结构完全相同。
任何想法都会非常有用,在这一点上完全停留数小时。
只是为了让它更清楚......这是实际的代码......
usersTable.findOne (
{ _id: userID }
,function (err, data) {
show("============BEFORE================")
show({data})
data.agentName = agentName + "XXXX";
delete data.password
delete data.userLog
show("============AFTER================")
show({data})
return resolve(data);
}
答案 0 :(得分:0)
我是如何解决的......
data = data.toJSON();
这就是全部...然后它完美地运作了。
所以不要被console.log(数据)所迷惑,因为它会显示完全相同的天气你的结果是一个真正的Json对象。
只是糟透了它没有给出任何错误,例如"这不是一个json对象"或类似的东西。