2017-01-16 80 views
0

我對Mongoose相當陌生,不認爲我的方法刪除子文檔中的項目是正確的。刪除子文檔中的子元素不起作用

我有以下模式設置:

//DEPENDENCIES 
var mongoose = require('mongoose'); 


var contactSchema = new mongoose.Schema({ 
    name:{type:String}, 
    age:{type:Number} 
}); 

var phoneSchema = new mongoose.Schema({ 
    number:{ type: String }, 
    phoneType:{ type: Number } 
}) 

var memberSchema = new mongoose.Schema({ 

    firstname: { 
    type: String 
    }, 
    lastname: { 
    type: String 
    }, 
    phone:[phoneSchema], 
    contacts:[contactSchema] 

    }); 

//RETURN MODEL 

module.exports = mongoose.model('member', memberSchema); 

從手機中刪除一個項目,在我的快遞API,我先找到父然後引用爲孩子ID「刪除」,這樣的。但它不起作用。

router.route( '/老闆/:OWNERID /電話/:phoneId')

.delete(function(req, res){ 
    Member.findOne({_id: req.body.ownerId}, function(err, member){ 
     member.phone.remove({_id: req.body.phoneId}, function(err){ 
     if(err) 
      res.send(err) 
     res.json({message: 'Success! Phone has been removed.'}) 
    }); 
    }); 
}); 

回答

0

想通了,我一直在尋找req.body和實際需要req.params。

還發現正確的語法上的貓鼬文檔:

router.route('/owner/:ownerId/phone/:phoneId') 

.delete(function(req, res){ 
    Member.findOne({_id: req.params.ownerId}, function(err, member){ 

     member.phone.id(req.params.phoneId).remove(); 

     member.save(function (err) { 
     if (err) return handleError(err); 
     console.log('the sub-doc was removed'); 
     }); 


    }); 
});