当承诺失败时如何捕捉?
How to catch when a promise fails?
问题
我的代码正在数据库中搜索记录,但在找不到现有条目时出现 return 错误。它需要在解析之前检查请求是否为空,如果没有找到记录,则 return 一个空数组,如果找到一个记录,则 return [results] 数组。我该如何解决这个问题?
这是 Zapier 与 Zoho CRM 的集成,它将通过 Account_Name
搜索自定义模块以查找现有记录,如果不存在则创建一个。
代码
const options = {
url: `https://www.zohoapis.com/crm/v2/Accounts/search?criteria=(Account_Name:equals:${bundle.inputData.Account_Name})`,
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `Zoho-oauthtoken ${bundle.authData.access_token}`,
'Accept': 'application/json'
},
params: {
}
}
return z.request(options)
.then((response) => {
response.throwForStatus();
const results = [z.JSON.parse(response.content)];
return [results];
});
如果您的 promise 无法解决,您可以尝试使用 catch
。
喜欢:
return z.request(options)
.then((response) => {
response.throwForStatus();
const results = [z.JSON.parse(response.content)];
return [results];
})
.catch(err => {
/*
check if the error is specifically where no entry in db was found.
Or if the error is always for that purpose
*/
console.log(err) // handle error approriately, maybe send to sentry?
return []; //emtpy array, when db errors out?
});
如果 response.content 在找不到任何东西时为 null:
.then((response) => {
...
return (response.content) ?
[z.JSON.parse(response.content)] :
Error("invalid request");
}
如果 response.content 在找不到任何东西时是一个空对象:
.then((response) => {
...
return (Object.keys(response.content).length) ?
[z.JSON.parse(response.content)]
: Error("invalid request");
}
问题
我的代码正在数据库中搜索记录,但在找不到现有条目时出现 return 错误。它需要在解析之前检查请求是否为空,如果没有找到记录,则 return 一个空数组,如果找到一个记录,则 return [results] 数组。我该如何解决这个问题?
这是 Zapier 与 Zoho CRM 的集成,它将通过 Account_Name
搜索自定义模块以查找现有记录,如果不存在则创建一个。
代码
const options = {
url: `https://www.zohoapis.com/crm/v2/Accounts/search?criteria=(Account_Name:equals:${bundle.inputData.Account_Name})`,
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': `Zoho-oauthtoken ${bundle.authData.access_token}`,
'Accept': 'application/json'
},
params: {
}
}
return z.request(options)
.then((response) => {
response.throwForStatus();
const results = [z.JSON.parse(response.content)];
return [results];
});
如果您的 promise 无法解决,您可以尝试使用 catch
。
喜欢:
return z.request(options)
.then((response) => {
response.throwForStatus();
const results = [z.JSON.parse(response.content)];
return [results];
})
.catch(err => {
/*
check if the error is specifically where no entry in db was found.
Or if the error is always for that purpose
*/
console.log(err) // handle error approriately, maybe send to sentry?
return []; //emtpy array, when db errors out?
});
如果 response.content 在找不到任何东西时为 null:
.then((response) => {
...
return (response.content) ?
[z.JSON.parse(response.content)] :
Error("invalid request");
}
如果 response.content 在找不到任何东西时是一个空对象:
.then((response) => {
...
return (Object.keys(response.content).length) ?
[z.JSON.parse(response.content)]
: Error("invalid request");
}