2017-01-16 77 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'); 
     }); 


    }); 
});