在Mongoose对象中更新指针

时间:2015-08-29 22:47:11

标签: javascript node.js mongodb mongoose

大家好我正在使用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);

0 个答案:

没有答案