我尝试根据记录类型和索引获取记录。
请求: {“recordtype”:“customer”,“gu_action”:“get_all”,“size”:1000,“index”:0}
它的作品很好。但Api每次拨打电话需要4-5分钟的响应时间。知道如何缩短这个时间吗?
我的Restlet代码:
get_all动作将调用get_Allrecords函数:
// Works
static var modifiedClassName: String {
let s = type(of: self)
return String(describing: s).modified()
}
/ 回拨get_All记录 /
/********************** Get All records of Record type *******************************/
function get_Allrecords(datain) {
var all_IDs = getAllIDs(datain);
var len = all_IDs.length;
var result = new Array();
var results = new Array();
var fields = datain.fields;
for (var i = 0; i < len; i++) {
var required_result = {};
try {
result[i] = **nlapiLoadRecord(all_IDs[i].getRecordType(), all_IDs[i].id);**
if(fields != undefined && fields.length > 0) {
for( var j = 0; j<fields.length; j++){
req = fields[j];
if(result[i].getFieldValue(req) != undefined){
required_result[req] = result[i].getFieldValue(req);
}
if(req == "recordtype"){
required_result[req] = all_IDs[i].getRecordType();
}
}
} else {
required_result =result[i];
}
} catch (ex) {
if (ex.code == "INSUFFICIENT_PERMISSION") {
}
} //try.... catch... ends
results.push(required_result);
} //for ends
return results;
}
答案 0 :(得分:4)
nlapiLoadRecord
中的get_Allrecords
电话是您的性能瓶颈。从数据库加载整个记录是SuiteScript中最昂贵的操作之一 - 特别是如果记录是事务 - 并且您在请求中加载了1000条记录。
在NetSuite中加载较重的记录(即交易)可能需要几秒钟,因此花费几分钟的1,000条记录并不令人惊讶。
你真的需要所有的每个记录上的字段吗?您可以通过单个搜索获得更好的性能,该搜索仅包含每个记录所需的列,而不是尝试加载每个完整记录。
如果确实需要每条记录上的所有字段,则可能需要查看SuiteTalk SOAP API;虽然它的性能通常比RESTlet低得多,但它可以在像这样的非常大的请求上胜过RESTlet。