首页 > 解决方案 > Axios.delete() 未按预期触发

问题描述

所以我有一个课程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. 有什么想法或建议可以让它发挥作用吗?非常感谢。

标签: node.jsreactjsmongodbmongooseaxios

解决方案


推荐阅读