javascript - 如何访问 Netsuite 中 MapReduce 脚本的 Map 方法上的 getInputMethod 返回的数据(搜索、对象)

标签 javascript mapreduce return netsuite suitescript

在我的 MapReduce 脚本的 getInputData() 中,我在发票记录上创建了搜索,在名为契约(Contract)的自定义记录上创建了搜索并将结果存储在一个对象中,而且我还在名为公式的自定义记录上创建了另一项搜索并存储结果在一个对象中,最后我返回发票搜索结果、契约(Contract)对象、公式对象。

我现在可以使用上下文对象在 Map 方法上访问 getInputData 方法返回的所有数据。

我正在使用 JSON.PARSE(Context.Value) 在 map 方法上获取发票搜索结果的数据;如何在Map方法上获取合约对象和公式对象的数据。

代码:

var  contractRecords = {};
 var Formulas = {};
 define(['N/error', 'N/record', 'N/search', 'N/log', 'N/task', 'N/runtime', 'N/email'],
 function(error, record, search, log, task, runtime, email) {
 function getInputData() {
                try{
                log.debug("Get Input", "Initiated");
                //Invoice Search
                var invoiceSearch = search.load({
                    id: 'customsearch_invoice_search'
                });

                log.debug("invoiceSearch:", invoiceSearch);
                log.debug("GetInputData", "Completed");
                //Storing values on Contract Object by Creating Search on Contract Record
                contractRecords = loadContractRecords();
                log.debug("contractRecords:",contractRecords);
                  //Storing values on Formula Object by Creating Search on Formula Record
                Formulas = loadFormulas();
                log.debug("Formulas:",Formulas);

                return [invoiceSearch,contractRecords,Formulas];
                }catch(exception){
                    log.debug("GetInputDate Error Message:",exception);
                }
            }

             function map(context) {
                try{
                //Getting Search Results of Invoice
                var searchResult = JSON.parse(context.value);
                log.debug("searchResult:", searchResult);
                var invoiceId = searchResult.id;
                var item = searchResult.values.item.value;
                var lineId = searchResult.values.line;
                var lineUniqueKey = searchResult.values.lineuniquekey.value;
                var invoice_amt = searchResult.values.amount;

                }catch(exception){
                  log.debug("Map Error Message:",exception);
                }
                }
                  function reduce(context) {

                  log.debug("Reduce:", "Initiated");
                 }



               function summarize(summary) {
                   log.debug("summarize", "Initiated");

                  log.debug("summarize", "Completed");
               }
                 return {
                getInputData: getInputData,
                map: map,
                reduce: reduce,
                summarize: summarize
            };

        });

contractRecords、Formulas 对象是全局的,所以我已经用返回对象的方法分配了对象,然后我访问了 Map() 方法上的全局变量,但它在 GetInputData() 方法中返回空值,同一对象具有值(value)观。因此,我在 GetInputData() 方法的返回语句上返回了契约(Contract)和公式对象以及发票搜索结果,但无法在 Map() 方法上获取契约(Contract)和公式对象的值。

提前致谢

最佳答案

GetInputData() 方法的返回值应该是四种值类型之一(Array | Object | search.Search | mapReduce.ObjectRef)。后两个search.Search和mapReduce.ObjectRef都有特殊处理。 ran搜索的每个结果都会被发送到MAP阶段。

从您的示例中,您将返回一个数组(包含三个槽);这将产生三个不同的 Map 阶段进程。三个 Map 阶段进程中的每一个都将仅包含 GetInputData() 返回的槽的数据(invoiceSearch、contractRecords、Formula)。

您是否需要在 Map 阶段获取contractRecords 和 Formulas 以及invoiceSearch 单独结果中的数据?

关于javascript - 如何访问 Netsuite 中 MapReduce 脚本的 Map 方法上的 getInputMethod 返回的数据(搜索、对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39463949/

相关文章:

javascript - 将数据从 Javascript 传递到 Flex 时出现问题

java - 用于日志分析的 Map Reduce 作业未在 Hadoop 2.7.3 伪分布式模式下运行

c++ - 在大括号中返回构造函数参数?

javascript - 如何更改jquery get方法中的全局变量?

Java,返回字符串错误

javascript - 输入无效时显示工具提示/消息 HTML/JS/CSS/Angularjs

javascript - 如何从 JSON 数组转换为 JSON 对象

hadoop - Hadoop排序图并减少键值

hadoop - hadoop中的系统配置

javascript - 记录按下了哪些键以及按什么顺序 javascript?