2017-08-17 4 views
0

Je suis en train de créer un tableau d'objets en chargeant une recherche et en poussant les résultats à un tableau:Comment faire correspondre un enregistrement utilisateur à une recherche sauvegardée dans NetSuite?

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); 
    } 

J'ai un code plus qui va charger le dossier de l'utilisateur actuel pour saisir les numéros internes, etc. Cependant , en essayant de tester avec un ID statique pour le service que je continue à recevoir:

TypeError: Cannot find function find in object. 

Voici le reste du code:

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

} 

Tout hel p est très apprécié!

Répondre

0

find La méthode a été introduite dans ES2015 et n'est pas supportée par NetSuite. Vous pouvez essayer d'utiliser une bibliothèque 3ème partie comme underscore qui comprend polyfills pour les méthodes de ES2015 comme find:

function findApprover(approverInfo) { 
    return approverInfo.engine === '26'; 
} 

var approverInfo = _.find(searchArr, findApprover); 

log.debug({ 
    title : 'Current User Approver ID', 
    details : approverInfo 
}); 

Ou chercher le approbateur d'une manière différente, par exemple, en utilisant une boucle 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 
}); 
+0

Merci André! Je n'arrive pas à comprendre comment faire fonctionner la bibliothèque de soulignement, mais la deuxième solution (pour la boucle) fonctionnait parfaitement. –