Tengo estos esquemas de mangosta:
const UserSchema = new Schema({ email: { type: String, required: true, unique: true, }, groups: [ { groupName: { type: String, required: true, }, groupMembers: [{ type: Schema.Types.ObjectId, ref: "GroupMember" }], }, ], }); const GroupMemberSchema = new Schema({ firstName: String, lastName: String, birthday: Date, gender: String, age: Number });Quiero tener 2 rutas:
groupMembers en función de objectId.groups en función de objectId. Mi intento de eliminar la ruta del miembro del grupo. Esta ruta elimina el miembro del grupo de la colección groupMembers éxito, pero el miembro del grupo aún existe en la colección de user :
router.delete( "/:userId/:groupId/:groupMemberId", catchAsync(async (req, res) => { const { userId, groupId, groupMemberId } = req.params; await GroupMember.findByIdAndDelete(groupMemberId); const user = await User.findById(userId); const group = user.groups.find((group) => group._id.toString() === groupId); const groupIndex = user.groups.indexOf(group); const updatedGroupmembers = user.groups[groupIndex].groupMembers.filter(groupMember=> groupMember._id.toString()!==groupMemberId); res.send({updatedGroupmembers}) }) );¿Intentaste usar $pull?
router.delete( '/:userId/:groupId/:groupMemberId', catchAsync(async (req, res) => { const { userId, groupId, groupMemberId } = req.params; await GroupMember.findByIdAndDelete(groupMemberId); const updatedUser = await User.findByIdAndUpdate({ id: userId }, { $pull: { groups: groupId } }, { new: true }); res.send({ updatedUser }); }), );