通常我会做到这一点:无法在JSON对象添加和删除字段
var res = {};
res = { _id: '[email protected]',
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: '[email protected]',
phone: '123123123',
name: 'Torben Tester',
foo: 'bar'
}
但是......如果我从记录MongoDB的
usersTable.findOne (
{ _id: '[email protected]' }
,function (err, data) {
res = data
}
然后水库仍然是完全一样
前但是没有任何修改工作
res.foo = "bar";
delete res.password
delete res.userLog
做什么都没有。他们不会返回任何错误,并且前后保持不变。
我缺少什么?当它来自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);
}
是'res = data'后面的'delete res.password'? –
正如'函数(err,data){res = data;删除res.password; }' – mplungjan
是的。我只是简化了代码,使其更简单 – torbenrudgaard