无法将id保存到变量中

时间:2014-06-02 20:28:35

标签: javascript mongodb

我在向变量分配id字段时遇到了问题。

鉴于此:

var temp;

if(!data.obj.id){
    console.log('*************** assigning ' + data.obj.id + ' to temp');
    temp = data.obj.id;
    console.log('temp is',temp);
}else if(!data.obj._id){
    console.log('*************** assigning ' + data.obj._id + ' to temp');
    temp = data.obj._id;
    console.log('temp is: ',temp);
}

console.log('**************',data.obj._id);
console.log('**************',temp);

这些if语句都不是真的,并且控制台日志返回

************ 538cdd6fca343660389d4d69

************ undefined

编辑:

我也试过了:

if(data.obj.hasOwnProperty('id')){
        console.log('*************** assigning ' + data.obj.id + ' to temp');
        temp = data.obj.id;
        console.log('temp is',temp);
    }else if(data.obj.hasOwnProperty('_id')){
        console.log('*************** assigning ' + data.obj._id + ' to temp');
        temp = data.obj._id;
        console.log('temp is: ',temp);
    }

    console.log('**************',data.obj._id);
    console.log('**************',temp);

temp仍未定义。

EDIT2:

我已将代码更改为:

var temp;

if(data.obj.hasOwnProperty('id')){
    console.log('*************** assigning ' + data.obj.id + ' to temp');
    temp = data.obj.id;
    console.log('temp is' + temp);
}

if(data.obj.hasOwnProperty('_id')){
    console.log('*************** assigning ' + data.obj._id + ' to temp');
    temp = data.obj._id;
    console.log('temp is' + temp);
}

console.log('**************',data.obj._id);
console.log('**************',data.obj.id);
console.log('**************',temp);

我得到了:

************** 538ce08c6ced88c020ecbd07
************** 538ce08c6ced88c020ecbd07
************** undefined

1 个答案:

答案 0 :(得分:1)

你没有记录data.obj.id的值,但可能也是如此,就像_id一样(在他们的否定返回错误的意义上)。因此,在您的示例中,第一个和第二个if子句都不会被执行,并且两个分支都不会执行。您似乎想从if子句中删除否定运算符!,但在没有上下文的情况下很难判断。