【问题标题】:SuiteScript 2.0: Are there any search result limitations when executing a saved search via "getInputData" stage of map/reduce script?SuiteScript 2.0:通过 map/reduce 脚本的“getInputData”阶段执行保存的搜索时,是否有任何搜索结果限制?
【发布时间】:2020-10-13 02:17:05
【问题描述】:

我目前正在 NetSuite 中构建一个 map/reduce 脚本,它将保存的搜索结果从 getInputData 阶段传递到 map 阶段。这是通过首先在 getInputData 阶段运行 WHILE 循环来获取每个条目的内部 id,插入到数组中,然后传递到 map 阶段来完成的。像这样:

           // run saved search - unlimited rows from saved search.
        do {
            var subresults = invoiceSearch.run().getRange({  start: start,  end: start + pageSize  });
            results = results.concat(subresults);
            count = subresults.length;
            start += pageSize + 1;
        } while (count == pageSize);
        
        var invSearchArray = [];
        
        if(invoiceSearch){
            //NOTE: .run().each has a limit of 4,000 results, hence the do-while loop above.
            for (var i = 0; i < results.length; i++){ 
                var invObj = new Object();
                invObj['invID'] = results[i].getValue({name: 'internalid'}); 
                invSearchArray.push(invObj);
            }
        }

        return invSearchArray;

我以这种方式实现它是因为我担心会有结果限制,就像“.run().each”函数一样(限制为 4000 个结果)。

我假设将搜索对象直接从 getInputData 传递到 Map 也会限制 4000 个结果。有人可以澄清是否有这样的限制吗?由于在 map/reduce 脚本的 getInputData 阶段无法处理超过 4000 的搜索结果,我是否担心脚本会过早停止?

任何帮助我理解如何在 map/reduce 脚本中处理搜索对象的示例将不胜感激。

谢谢

【问题讨论】:

    标签: mapreduce netsuite suitescript suitescript2.0


    【解决方案1】:

    如果您只是返回 Search 实例,所有结果将传递给 map,超出 getRangeeach 方法的 1000 或 4000 个限制。 p>

    如果搜索有 8500 个结果,则所有 8500 个都将传递给 map

    function getInputData() {
      return search.load(...); // alternatively search.create(...)
    }
    

    【讨论】:

    • 非常感谢您回答 Eric。但是 - 我也应该借此机会直接感谢您前段时间上传到 YouTube 的 SuiteScript 2.0 教程。这真的很有用。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2023-02-20
    相关资源
    最近更新 更多