node.js - Why can't I seem to merge a normal Object into a Mongo Document? -


i have data feed 3rd party server pulling in , converting json. data feed never have mongodb's auto-generated _ids in it, there unique identifier called vehicle_id.

the function below handling taking data-feed generated json object fresh_event_obj , copying values mongo document if there mongo document same vehicle_id.

function update_vehicle(fresh_event_obj) {     console.log("updating vehicle " + fresh_event_obj.vehicleid + "...");      vehicle.find({ vehicleid: fresh_event_obj.vehicleid }, function (err, event_obj) {       if (err) {         handle_error(err);       } else {         var updated = _.merge(event_obj[0], fresh_event_obj);          updated.save(function (err) {           if (err) {             handle_error(err)           } else {             console.log("vehicle updated");           }         });        }     });   } 

the structures of event_obj[0] , fresh_event_obj identical, except event_obj[0] has _id , __v while "normal" object doesn't.

when run _.merge on these two, or own recursive function copies values latter former, nothing in updated object different event_obj[0], despite fresh_event_obj having new values.

does have idea i'm doing wrong? feel obvious , i'm failing see it.

the problem if don't have properties defined in schema, , if don't exist, can't create them

doc.prop = value 

even if have {strict:false} in schema.

the way set new properties

doc.set('prop', value) 

(you still have have {strict:false} in schema if property doesn't exist in schema)

as having many properties defined in schema, can use for-in loop go through object properties

for(key in fresh_event_obj)     event_obj.set(key, fresh_event_obj[key]); 

Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -