所以这是我的代码:
var result = JSON.parse(res);
if (result.data.status === 404) {
client.chatMessage(steamid,"Please check that the order id is correct, Code = ERR:404")
} else {
var meta = result.meta_data;
var tradeurl = meta[0].value;
var billing = result.billing;
var name = billing.first_name +" "+ billing.last_name;
var status = result.status;
client.chatMessage(steamid,"Name : "+name+"\nTradeUrl : "+ tradeurl +"\n Current Status : " + status)
}
我要做的是首先检查id是否存在,如果不存在,这是回复:
{ code: 'woocommerce_rest_shop_order_invalid_id',
message: 'Invalid ID.',
data: { status: 404 } }
正如你所看到的,我添加了一个if条件来检查这个值是否存在,但问题是当订单ID正确时,返回一个不同的JSON,它不包含data
字段,当反过来崩溃应用程序时,那么有没有办法在实际拉动之前检查JSON中是否存在字段?
当订单ID正确时[...]不包含数据字段
因此,如果仅在发生错误时data
在响应中,您可以检查result.data
是否未定义
if (typeof result.data === "undefined") {
/* ok */
}
else {
/* error */
}
有一个名为Optional Chaining的ECMAScript新提案。一旦获得批准,您就可以这样做:
var zip = user?.address?.zip
即使当undefined
是user
,而且undefined
也不存在,拉链将是address
。
不是工作的答案,但值得注意。