Thursday 1 June 2017

Issue in saving values in array in mongoose model using save()

I am trying to update a document in a collection. I am particularly trying to update an array of Strings.The following is my Schema

var sampleSchema= mongoose.Schema({

        fullName   : String,
        email      : String,
        rolesTaken : [String],

});

I basically have an array of such schema's. I want to update the rolesTaken array for all of them. So I did the following

    var async = require('async');
    var ATmapping = require('path to Schema');

    ATmapping.find({},function(err,lists){
     if(err){
         console.log(err);
         return;
     }
     if(lists.length > 0){
      async.each(lists,function(list,callback){ 
        if(!list.rolesTaken){
              list.rolesTaken =[];
        }
       list.rolesTaken.push("Patient");
       list.markModified('rolesTaken');
       list.save(function(err,item){
            if (err){
                console.log(err);
            }

            console.log('Saved', item);
            callback();
       });
      });
     }
   });

I have browsed a lot and the most popular solution was to add markModified. But it doesn't seem to work in my case.When I added mongoose.debug i got the following

atmappings.update({ _id: ObjectId("59074b127adeef0004b84ac3"), __v: 7 }, { '$set': { rolesTaken: [] }, '$inc': { __v: 1 } })

As you can see the roles taken is empty despite me adding markmodified and save(). I would like to know if I am missing something which is preventing me from saving the values in the schema.

Thanks in advance.



via RBN

No comments:

Post a Comment