nodejs响应的第二级对象出错

时间:2015-05-14 16:50:33

标签: javascript node.js object undefined response

我有这种情况..,我做了这样的事情:

app.post('someUrl', function (req, res) {

    var r = res.data;

    var a = {};
    a.name = r.name || "",
    a.someotherKey : {
        id: r.otherKey.id || ""
    }

});

当res.data ==""时,我可以分配a.name的值,因为r.name是"未定义",但我是r。 otherKey.id我得到了一个可怕的

"TypeError: Cannot read property 'id' of undefined"

解决问题的任何想法???

2 个答案:

答案 0 :(得分:1)

您可以利用&&运算符执行:

a.someotherKey = {
    id: r.otherKey && r.otherKey.id || ""
}
如果两者都为真,则

&&将返回第二个值,如果其中一个(或两者)为假,则返回false

答案 1 :(得分:1)

如果你有一个深层对象,比如r.otherKey.prop.furtherDown.id,那么这个答案特别有用。

您可以使用try {} catch {}块来执行此操作,并在未定义时处理错误:

try {
    a.someOtherKey.prop.furtherDown = {
        id: r.otherKey.prop.furtherDown.id || ""
    };
} catch (e) {
    a.someOtherKey.prop.furtherDown = {
        id: ""
    };
}