in mean app, have situation, i'm reading in csv data line line, , using 'upsert' update existing records, insert those, not match 'cscopportunityid' field value:
if(metafields.subjectcategory === 'salesforcedata'){ //here use upsert logic either insert new, or update existing records (var = 0; < result.length; i++) { //console.log(result[i]); var inserted = 0; (var = 0; < result.length; i++) { var datarecord = result[i]; datarecord.originaldocumentname = filename; datarecord.documentauthor = metafields.documentauthor; datarecord.tabname = tabname; datarecord.subjectcategory = metafields.subjectcategory; datarecord.subject = metafields.subject; datarecord.datedocumentproduced = metafields.datedocumentproduced; datarecord.datedocumentreceived = metafields.datedocumentreceived; datarecord.documentsubmitter = metafields.documentsubmitter; datarecord.documentreviewer = metafields.documentreviewer; datarecord.originalsource = metadatafields.originalsource, datarecord.dataversion = metadatafields.dataversion, datarecord.datafields = newcsvlines[0]; collection.update( { cscopportunityid: datarecord.cscopportunityid }, { $set: { originaldocumentname: datarecord.originaldocumentname, documentauthor: datarecord.documentauthor, tabname: datarecord.tabname, subjectcategory: datarecord.subjectcategory, subject: datarecord.subject, datedocumentproduced: datarecord.datedocumentproduced, datedocumentreceived: datarecord.datedocumentreceived, documentsubmitter: datarecord.documentsubmitter, documentreviewer: datarecord.documentreviewer, originalsource: datarecord.originalsource, dataversion: datarecord.dataversion, datafields: datarecord.datafields, cscopportunityid : datarecord.cscopportunityid, opportunityname: datarecord.opportunityname , accountname : datarecord.accountname, opportunityowner : datarecord.opportunityowner, stage : datarecord.stage, industry : datarecord.industry, acv : datarecord.acv, revenuestartdate : datarecord.revenuestartdate, revenueterm : datarecord.revenueterm, probabilitypct : datarecord.probabilitypct, dealregion : datarecord.dealregion } }, {upsert: true}, {multi:true} //if (++inserted == result.length) { // console.log("finished"); // //db.close(); //} ); } } } the update parts works, insert part not, because not know how make insert, when value of 'cscopportunityid' finds no match.
what proper way of handlding this?
the update method takes 4th argument callback function. since provided object {multi: true}, won't make db call, return promise. correct syntax is:
collection.update(query, fieldstoset, {upsert: true, multi: true}, function(err,doc){ })
Comments
Post a Comment