大家好我正在使用MongoDB和Mongoose开发一个项目。
我有一个方案,我检查给定的Mongoose对象是否存在某个属性;如果不是,我用指针创建一个新的;如果存在,我只是得到一个指针。
现在我更新这些指针的内容,并尝试.save()Mongoose对象。但它不会更新。我已经使用了控制台日志,它告诉我指针已经改变,但不是Mongoose对象内部的实际内容。还有其他人来过这个问题吗?有没有办法解决?我执行它的顺序是否重要(如果我将数据推入对象的属性然后我修改指针的内容,反之亦然)?
我还考虑了如何通过推入数组来影响指针,但如果我没记错,java浅层将内容复制到数组中。所以指针仍应指向同一个对象?
由于
Model.findOne({ name: personA.name }, function(err, model) {
// if such an object exists dbModel points to it otherwise create new object
var dbModel;
if(model) dbModel = model;
else dbModel = new Model({
name: personA.name,
hobbies: []
});
var newHobby;
// helper function returns index of object in the array with sports = basketball
// if no such object exists returns -1
hobbyIdx = indexOfWithAttr(dbModel.hobbies, "sports", "basketball");
if(hobbyIdx == -1) {
newHobby = {
sports: basketball,
gears: []
}
dbModel.hobbies.push(newHobby);
}
else { newHobby = dbModels.hobbies[hobbyIdx]; }
// code changing contents of newHobby goes here...
newHobby.gears.push("sneakers");
// then finally save...
dbModel.save();
}
然后输出
//prints '{ sports: basketball }'
console.log(newHobby);
// prints '{ name: John, hobbies: [{ sports: basketball }] }'
console.log(dbModel);