Netsuite API需要很长时间才能做出响应

时间:2016-11-23 12:39:29

标签: netsuite suitescript

我尝试根据记录类型和索引获取记录。

请求: {“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;
}

1 个答案:

答案 0 :(得分:4)

nlapiLoadRecord中的get_Allrecords电话是您的性能瓶颈。从数据库加载整个记录是SuiteScript中最昂贵的操作之一 - 特别是如果记录是事务 - 并且您在请求中加载了1000条记录。

在NetSuite中加载较重的记录(即交易)可能需要几秒钟,因此花费几分钟的1,000条记录并不令人惊讶。

你真的需要所有的每个记录上的字段吗?您可以通过单个搜索获得更好的性能,该搜索仅包含每个记录所需的列,而不是尝试加载每个完整记录。

如果确实需要每条记录上的所有字段,则可能需要查看SuiteTalk SOAP API;虽然它的性能通常比RESTlet低得多,但它可以在像这样的非常大的请求上胜过RESTlet。