如何在 Netsuite 'N/search Module' 中使用 for 循环获取第一组千条记录和下一组千条记录
How get fist set of thousand records and next set of thousand records using for loop in Netsuite 'N/search Module'
我想处理从搜索结果中获得的搜索结果中的第一组千条记录,然后处理下一组千条记录。
我正在使用 suitescript 2.0 版本'N/search'模块的方法 (getRange(0,1000)).
代码:
var mySearch = search.load({
id: 'customsearch_employee'
});
var searchResult = mySearch.run().getRange(0, 100);
for (var i = 0; i < searchResult.length; i++) {
var entity = searchResult[i].getValue({
name: 'entity'
});
});
我想知道如何使用 for 循环处理下一组千条记录。
提前致谢
您应该可以使用以下方法获得下一个范围:
var searchResult = mySearch.run().getRange(1000, 2000);
在一个循环中,您可以检查长度并获得所有结果:
var searchResult = mySearch.run().getRange(0, 1000) || [];
var i = 1000;
while(searchResult.length >= 1000){
i+= 1000;
searchResult = searchResult.concat((mySearch.run().getRange(i, i+1000) || []));
}
SuiteScript 2.0 为您提供分页API。我会先解释一下,然后再举个例子。
在您创建搜索对象 mySearch
之后,您调用 runPaged()
而不是调用 run()
来 运行 分页搜索,它有一个可选的 pageSize
参数允许您指定每页有多少结果。默认值为 50
.
runPaged
returns 一个 PagedData
对象,在其 pageRanges
属性 中包含结果页面列表。实际上,您通过在页面上调用 fetch
来检索每个页面上的结果。
此示例直接取自 N/search
的帮助页面,但我添加了一些解释性注释。
/**
*@NApiVersion 2.x
*/
require(['N/search'], function(search) {
function loadAndRunSearch() {
// Load your search into memory
var mySearch = search.load({
id: 'customsearch_my_so_search'
});
// Run paged version of search with 1000 results per page
var myPagedData = mySearch.runPaged({
"pageSize": 1000
});
// Iterate over each page
myPagedData.pageRanges.forEach(function(pageRange){
// Fetch the results on the current page
var myPage = myPagedData.fetch({index: pageRange.index});
// Iterate over the list of results on the current page
myPage.data.forEach(function(result){
// Process the individual result
var entity = result.getValue({
name: 'entity'
});
var subsidiary = result.getValue({
name: 'subsidiary'
});
});
});
}
loadAndRunSearch();
});
我想处理从搜索结果中获得的搜索结果中的第一组千条记录,然后处理下一组千条记录。
我正在使用 suitescript 2.0 版本'N/search'模块的方法 (getRange(0,1000)).
代码:
var mySearch = search.load({
id: 'customsearch_employee'
});
var searchResult = mySearch.run().getRange(0, 100);
for (var i = 0; i < searchResult.length; i++) {
var entity = searchResult[i].getValue({
name: 'entity'
});
});
我想知道如何使用 for 循环处理下一组千条记录。 提前致谢
您应该可以使用以下方法获得下一个范围:
var searchResult = mySearch.run().getRange(1000, 2000);
在一个循环中,您可以检查长度并获得所有结果:
var searchResult = mySearch.run().getRange(0, 1000) || [];
var i = 1000;
while(searchResult.length >= 1000){
i+= 1000;
searchResult = searchResult.concat((mySearch.run().getRange(i, i+1000) || []));
}
SuiteScript 2.0 为您提供分页API。我会先解释一下,然后再举个例子。
在您创建搜索对象 mySearch
之后,您调用 runPaged()
而不是调用 run()
来 运行 分页搜索,它有一个可选的 pageSize
参数允许您指定每页有多少结果。默认值为 50
.
runPaged
returns 一个 PagedData
对象,在其 pageRanges
属性 中包含结果页面列表。实际上,您通过在页面上调用 fetch
来检索每个页面上的结果。
此示例直接取自 N/search
的帮助页面,但我添加了一些解释性注释。
/**
*@NApiVersion 2.x
*/
require(['N/search'], function(search) {
function loadAndRunSearch() {
// Load your search into memory
var mySearch = search.load({
id: 'customsearch_my_so_search'
});
// Run paged version of search with 1000 results per page
var myPagedData = mySearch.runPaged({
"pageSize": 1000
});
// Iterate over each page
myPagedData.pageRanges.forEach(function(pageRange){
// Fetch the results on the current page
var myPage = myPagedData.fetch({index: pageRange.index});
// Iterate over the list of results on the current page
myPage.data.forEach(function(result){
// Process the individual result
var entity = result.getValue({
name: 'entity'
});
var subsidiary = result.getValue({
name: 'subsidiary'
});
});
});
}
loadAndRunSearch();
});