javascript - 如何使用中间件从 MongoDb 中删除孤立引用
问题描述
因此,我在节点中构建了一个项目,用户可以在其中上传图像,并且我在两个不同的 js 文档中有两个不同的模式,“帖子”和“用户”,它们是链接的。
这是用户架构:
const userSchema = new Schema({
email: {
type: String,
required: true,
unique: true
},
posts: [ { type: Schema.Types.ObjectId,
ref: "Upload" } ],
favourites: [ {
type: Schema.Types.ObjectId,
ref: "Upload" } ]
});
module.exports = mongoose.model("User", userSchema);
这是上传模式:
const uploadSchema = new mongoose.Schema({
title: String,
caption: String,
image:
{
url: String,
filename: String
},
author: {
type: Schema.Types.ObjectId,
ref: "User"
},
comments: [ { type: Schema.Types.ObjectId,
ref: "Comment" }
],
likes: [],
dislikes: []
});
module.exports = mongoose.model('Upload', uploadSchema);
我使用 findOneAndDelete 操作删除帖子。我正在尝试编写一个中间件,以便在删除帖子时,它也会从其作者用户的“帖子”数组以及可能喜欢它的任何用户的“收藏夹”数组中删除。
这是我尝试从“posts”数组中删除已删除帖子的孤立 ID 的中间件,但它不起作用,我什至不理解错误消息:
uploadSchema.pre('findOneAndDelete',function(next) {
this.model('User').update(
{ },
{ "$pull": { "posts": this._id } },
{ "multi": true },
next
);
})
老实说,我不知道中间件是如何工作的,有人有什么建议吗?
解决方案
推荐阅读
- regex - 使用正则表达式的 nginx 位置指令
- spring-boot - 在 Spring Boot 验证中相互影响的验证字段
- firebase - 如何从 Unity 检查文件是否存在于 Firebase 存储中?
- mysql - 我想将查询的行结果转换为 1 行
- c# - 为对象的 Delphi 过程编组 C# 调用者
- mongodb - 使用 MongoDB 查询计算百分比和计数文档
- java - 如何将数据从多个活动传递到活动
- python - 如何避免在遗传算法中选择两个相同的父母?
- selenium - 如何使用 selenium python 从 fakeaddressgenerator 中提取地址信息
- node.js - React-native-track-player 不为直播发送标题内容范围