0

在下面的代码片段中,我使用的是 mongoose 和 mongo db。TestSchema 的 arr 属性的元素在第二次保存后具有不同的_id。这是否意味着第一次保存后的子文档在第二次保存后被自动删除?还是我必须在进行第二次保存之前明确删除它?

var SubSchema = new Schema({
    itemId : String, value : String
});

var TestSchema = new Schema({
    arr : [SubSchema],
    prop1 : String
})  ;

var TestModel = mongoose.model("TestModel",TestSchema);

var test1 = new TestModel();
test1.arr = [{itemId :'abcabcabcabc', value : 'value1'}];

 // first save
test1.save(function(err,testObj){
    if(err){
        console.error(err);
        return;
    }else{
        console.log("testObj : " + testObj ); 
        var id1 = testObj.arr[0].id;  // id of zeroth element after first save
        console.log("id1 : " + id1);

        // replace arr with a new array     
        testObj.arr = [{itemId:'1', value : 'val1'}, {itemId:'2', value:'val2'}];

        // second save
        testObj.save(function(err,testObj){
           if(err){
               console.error(err);
               return;
           }else{
               console.log("testObj : " + testObj);   // gives 2 elements in arr with new _id's
               var oldobj = testObj.arr.id(id1);
               console.log("oldobj : " + oldobj);   /// gives null
           }
        });
    }
});
4

0 回答 0