【问题标题】:How to match a User Record to Saved Search in NetSuite?如何将用户记录与 NetSuite 中的已保存搜索匹配?
【发布时间】:2018-01-26 10:32:56
【问题描述】:

我正在尝试通过加载搜索并将结果推送到数组来创建对象数组:

var searchArr = [];

    var dfaSearch = search.load({
        id: 'id_of_search'
    });

    var runSearch = dfaSearch.run().getRange({
        start: 0,
        end: 100            
    });
    for (x=0; x<runSearch.length;x++) {
        var engine = runSearch[x].getValue({
            name: 'id_of_department_column'
        })
        var approver = runSearch[x].getValue({
            name: 'id_of_approver_column'
        });
        var lowT = runSearch[x].getValue({
            name: 'id_of_lowerapproval_column'
        });
        var upT = runSearch[x].getValue({
            name: 'id_of_upperapproval_column'
        });

       var  searchCriteria = {
          engine : engine,
          approver: approver,
          lowT : lowT,
          upT : upT 
       };

       searchArr.push(searchCriteria);
    }

我还有一些代码可以加载当前用户的记录以获取内部 ID 等。但是,当我尝试使用部门的静态 ID 进行测试时,我不断收到:

TypeError: Cannot find function find in object.

下面是剩下的代码:

function findApprover(approverInfo) {
     return approverInfo.engine === '26';
}
var approverInfo = searchArr.find(findApprover);
log.debug({
   title : 'Current User Approver ID',
   details : approverInfo
});

}

非常感谢任何帮助!

【问题讨论】:

    标签: javascript arrays javascript-objects netsuite


    【解决方案1】:

    find 方法是在 ES2015 中引入的,NetSuite 不支持。您可以尝试使用像 underscore 这样的第三方库,其中包括用于 ES2015 方法的 polyfill,如 find

    function findApprover(approverInfo) {
         return approverInfo.engine === '26';
    }
    
    var approverInfo = _.find(searchArr, findApprover);
    
    log.debug({
       title : 'Current User Approver ID',
       details : approverInfo
    });
    

    或者以不同的方式搜索批准者,例如,使用 for 循环:

    function findApprover(array, key, value) {
        for (var i = 0; i < array.length; i++) {
            if (array[i][key] === value) {
                return array[i];
            }
        }
        return null;
    }
    
    var approverInfo = findApprover(searchArr, 'engine', '26');
    
    log.debug({
       title : 'Current User Approver ID',
       details : approverInfo
    });
    

    【讨论】:

    • 谢谢安德烈!我不知道如何让下划线库真正工作,但第二个解决方案(for 循环)工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多