Netsuite中Strong SOAP获取多自定义字段搜索结果undefined问题求助
解决NetSuite Strong SOAP多自定义字段返回undefined问题
问题核心是单个与多个自定义字段的返回结构不一致:
- 仅1个自定义字段时,
row.basic.customFieldList.customField是单个对象 - 新增字段后,该属性会变成数组类型
你的原代码直接按单个对象读取$attributes.scriptId,多字段场景下自然返回undefined,必须先统一处理成数组再遍历。
修正后的代码示例:
let searchRows = result.searchResult.searchRowList.searchRow; searchRows.forEach((row) => { // 读取销售代表字段 const salesRepValue = row.basic.entityId.searchValue; console.log('销售代表:', salesRepValue); // 处理自定义字段:统一转成数组格式,兼容单/多字段场景 const customFields = Array.isArray(row.basic.customFieldList.customField) ? row.basic.customFieldList.customField : [row.basic.customFieldList.customField]; // 遍历每个自定义字段,通过scriptId识别区分 customFields.forEach(field => { const fieldScriptId = field.$attributes.scriptId; const fieldValue = field.searchValue; console.log(`字段[${fieldScriptId}]的值:`, fieldValue); // 可针对特定字段单独处理,比如你的收入字段 if (fieldScriptId === 'custbody_your_revenue_field') { // 收入字段相关逻辑 } else if (fieldScriptId === 'custbody_another_custom_field') { // 其他自定义字段逻辑 } }); });
额外注意事项:
- 确保使用的scriptId是NetSuite自定义字段的准确内部ID(区分大小写)
- 若存在自定义字段为空的情况,建议增加前置判断避免报错:
if (!row.basic.customFieldList || !row.basic.customFieldList.customField) return;
内容的提问来源于stack exchange,提问作者TheIronKing
相关产品推荐
相关产品推荐

