因此,我有一个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
中的数组中。有什么想法或建议,以使其工作吗?非常感谢。