删除子文档中的子元素不起作用

时间:2017-01-16 18:22:48

标签: node.js express mongoose mongoose-schema

我对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);

要从手机中删除某个项目,请在我的Express API中找到父级,然后引用"删除"对于孩子ID,像这样。但它不起作用。

router.route(' /所有者/:OWNERID /电话/:phoneId&#39)

.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.'})
    });
  });
});

1 个答案:

答案 0 :(得分:0)

想出我正在寻找req.body并且实际上需要req.params。

在Mongoose docs上也找到了正确的语法:

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');
      });


  });
});