Skip to content

Instantly share code, notes, and snippets.

@mseegers
Created February 5, 2013 00:44
Show Gist options
  • Save mseegers/4711139 to your computer and use it in GitHub Desktop.
Save mseegers/4711139 to your computer and use it in GitHub Desktop.
Test case for mongoose 3.5.4 that fails saving a subdocument retrieved via projection when saving. Saves to the wrong array element.
var mongoose = require('mongoose');
mongoose.set('debug', true);
var mongooseConnection = mongoose.createConnection('mongodb://localhost/mongooseprojectiontest');
var SubDocSchema = new mongoose.Schema({
someValue: { type: Number },
},{
versionKey: false
});
var DocSchema = new mongoose.Schema({
someId: { type: Number },
subDocs: [SubDocSchema],
});
var Doc = mongooseConnection.model('Doc', DocSchema)
var main = new Doc({
someId: 1,
subDocs: [{ someValue: 1 },{ someValue: 2 },{ someValue: 3 }]
});
main.save(function(err) {
if (err) { return console.log(err); }
Doc.findOne({someId: 1}, { subDocs: { $elemMatch: { someValue: 3}}}, function(err, doc){
if (err) { return console.log(err); }
for (var i = 0; i < doc.subDocs.length; i++) {
if (doc.subDocs[i].someValue == 3) {
doc.subDocs[i].someValue = 4;
}
}
doc.save(function(err) {
if (err) { return console.log(err); }
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment