0

I have a User model and Post, Comment model where Post.author and Comment.author reference User._id...

How can I add a middleware to delete all posts and comments when a user is deleted...

I have seen other questions on stackoverflow with answers involving schema.pre("remove"..., but now .remove() has been deprecated...

My desired implementation:

UserSchema = new mongoose.Schema({
...
})

PostSchema = new mongoose.Schema({
    author: String // User._id
...
})

CommentSchema = new mongoose.Schema({
    author: String // User._id
    post: String // Post._id
...
})

UserSchema.post("findOneAndDelete", async (doc) => {
    await Post.deleteMany({ author: doc._id });
    await Comment.deleteMany({ author: doc._id });
})

PostSchema.post("deleteMany", async (doc) => {
    await Comment.deleteMany({ post: doc._id })
})

How can I achieve this in mongoose v7.2.2?

0 Answers0