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: ""
};
}
我有这种情况..,我正在做这样的事情:
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: ""
};
}