Organizational Research By

Surprising Reserch Topic

Experts Most Trusted Topic


how to update embedded document in mongoose


how to update embedded document in mongoose  using -'mongodb,node.js,mongoose'

I've looked through the mongoose API, and many questions on SO and on the google group, and still can't figure out updating embedded documents.

I'm trying to update this particular userListings object with the contents of args.

for (var i = 0; i < req.user.userListings.length; i++) {
  if (req.user.userListings[i].listingId == req.params.listingId) {
    User.update({_id: req.user._id, 'userListings._id': req.user.userListings[i]._id},{'userListings.isRead': args.isRead, 'userListings.isFavorite': args.isFavorite, 'userListings.isArchived': args.isArchived}, function(err, user) {
      res.send(user);
    });
  }
}


Here are the schemas:

var userListingSchema = new mongoose.Schema({
  listingId: ObjectId
  , isRead: {type: Boolean, default: true}
  , isFavorite: {type: Boolean, default: false}
  , isArchived: {type: Boolean, default: false}
});

var userSchema = new mongoose.Schema({
  userListings: [userListingSchema]
});


This find also doesn't work, which is probably the first issue:

User.find({'_id': req.user._id, 'userListings._id': req.user.userListings[i]._id}, function(err, user){console.log(err ? err : user);});


which returns:

{ stack: [Getter/Setter],
  arguments: [ 'path', undefined ],
  type: 'non_object_property_call',
  message: [Getter/Setter] }


That should be the equivalent of this mongo client call:

db.users.find({'userListings._id': ObjectId("4e44850101fde3a3f3000002"), _id: ObjectId("4e4483912bb87f8ef2000212")})


Running:

mongoose v1.8.1
mongoose-auth v0.0.11
node v0.4.10

    

asked Sep 18, 2015 by vimaldas2005
0 votes
88 views



Related Hot Questions



Walkin Jobs Opening



Government Jobs Opening


...