Axios.delete()未按预期触发

时间:2018-11-13 11:15:33

标签: node.js reactjs mongodb mongoose axios

因此,我有一个Model班,其中包含一系列将要参加的人,我正在尝试从班级中删除人员。

这就是Model

const mongoose = require('mongoose');

const classMembersSchema = mongoose.Schema({
  userId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'user',
  }
})

const classSchema = mongoose.Schema({
  location: {
    type: String,
    required: true
  },
  type: {
    type: String,
    required: true
  },
  name: {
    type: String,
    required: true
  },
  time: {
    type: String,
    required: true
  },
  classMembers: [classMembersSchema]
});

module.exports = mongoose.model('createClass', classSchema);

classMembers数组是我提到的要从中删除成员的数组。 classMembers: [classMembersSchema]

这是axios.delete

deleteClassHandler = () => {
    axios.delete('/api/classes/' + this.props.id + '/user/' + this.props.userId)
      .then(response => {
        console.log(response);
      })
      .catch(error => {
        console.log(error);
      });
}

这是route

router.delete('/:id/user/:userId', ClassesController.deleteUser);

这是controller

exports.deleteUser = (req, res) => {
  GymClass.findById({
    _id: req.params.id
  }, 'classMembers', (err) => {
    if (err) {
      res.status(401).json({
        message: "Error Occured!"
      })
    } else {
      GymClass.findByIdAndDelete({
        "classMembers.userId" : mongoose.Types.ObjectId(req.params.userId)
      }, (err) => {
        if(err) {
            console.log('Keeps hitting here!');
            res.status(401).json({
              message: "Error Occured!"
            })
        } else {
          res.status(200).json({
            message: "Success!"
          })
        }
      });
    }
  })
}

一切正常,直到遇到console.log('Keeps hitting here!'); 在函数开始时,req.params.id是我们要修改的那个类的类ID,而req.params.userId是我们要从模型内部的数组中删除的用户,它的值正确但是到了这一步,它给了我Error

我在想可能是找不到了:

GymClass.findByIdAndDelete({
      "classMembers.userId" : mongoose.Types.ObjectId(req.params.userId)

由于它位于classMembers中的数组中。有什么想法或建议,以使其工作吗?非常感谢。

0 个答案:

没有答案