nodejs 响应的二级对象错误

Error on second level object for nodejs 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 是 "undefined",但我为 r.otherKey.id 我得到了一个可怕的

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

有解决问题的想法吗???

您可以利用 && 运算符来做:

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

&& 将 return 第二个值,如果一个(或两个)为假,则 false 将是第二个值。

如果你有一个深对象,这个答案特别有用,比如 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: ""
    };
}