Monday, 29 May 2017

Upsert data in loop

I am trying to upsert data in my "Languages" collection by iterating a for loop. However it does throw:

"E11000 duplicate key error collection: tms.languages index: language_id_1 dup key: { : null }"

even though I am convinced the record object is unique for each iteration.

var locales = cldr.localeIds
for(var i=0; i < locales.length; i++) {
    var locale = locales[i]
    var languageDisplayName = cldr.extractLanguageDisplayNames('en')[locale]

    if(languageDisplayName) {
        var query = {}
        query.iso_code = locale
        var record = {}
        record.name_en = languageDisplayName
        record.iso_code = locale
        logger.info(languageDisplayName)
        Language.update(query, record, {upsert: true}, function(err, numAffected) {
            if(err)
                throw err
        })
    }
}

What am I doing wrong here?



via kentor

No comments:

Post a Comment