Zapier集成Zoho CRM:Promise失败捕获与空结果处理求助
解决Zoho CRM搜索Accounts模块的记录问题
我帮你调整了代码,解决搜索不到记录报错、响应空值检查以及Promise错误捕获的问题,先看修正后的完整代码:
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(); // 先检查响应内容是否为空,避免解析时报错 if (!response.content) { return []; } const parsedResponse = z.JSON.parse(response.content); // Zoho CRM搜索接口的实际结果存放在data字段,无匹配时data为空数组 const results = parsedResponse.data || []; // 按需求返回:有记录则返回记录数组,无记录返回空数组 return results; }) .catch((error) => { // 捕获请求全流程的错误(网络问题、权限错误、接口异常等) console.error('Zoho CRM搜索请求失败:', error); // 按需求返回空数组,也可根据场景自定义错误处理逻辑 return []; });
关键修改说明
- 响应空值检查:在解析JSON前先判断
response.content是否存在,避免空内容触发解析报错。 - 正确提取结果:Zoho CRM的搜索接口返回结构中,实际记录都在
data字段里,无匹配记录时该字段本身就是空数组,直接返回它就能满足“找不到返回空数组”的需求。 - Promise错误捕获:通过
.catch()捕获整个请求流程中可能出现的异常(比如网络超时、权限验证失败、接口返回5xx错误等),这里我们打印错误日志后返回空数组,你也可以根据需要调整错误处理逻辑(比如抛出特定错误给Zapier)。 - 修正结果格式:你原代码把整个响应包成嵌套数组的写法不符合Zoho的返回结构,现在直接返回
data数组,更贴合Zapier对结果的预期——找到记录时返回包含记录的数组,无记录时返回空数组。
如果你的需求确实是要返回嵌套一层的数组(比如[results]),只需把return results;改成return [results];即可,但通常Zapier的模块更适配单层记录数组的格式。
内容的提问来源于stack exchange,提问作者David Engle
相关产品推荐
相关产品推荐

