无法添加和删除json对象中的字段

时间:2017-11-18 06:57:51

标签: javascript json

通常我会这样做:

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);
}   

1 个答案:

答案 0 :(得分:0)

我是如何解决的......

data = data.toJSON();

这就是全部...然后它完美地运作了。

所以不要被console.log(数据)所迷惑,因为它会显示完全相同的天气你的结果是一个真正的Json对象。

只是糟透了它没有给出任何错误,例如"这不是一个json对象"或类似的东西。