我正在一个具有关注者/以下架构的平台中工作。
我想从发出请求的用户的角度获得其他用户的关注者/关注者状态。这意味着,每当一个请求由一个用户发出,并且在响应中有其他用户出现时,我都希望响应中包括跟踪或跟随那些发出请求的用户。
例如,用户X正在获取出版物列表。 在出版物中,您可以看到喜欢该出版物的用户。 我需要显示用户X是否跟随或正在跟随这些用户中的任何一个。
我当前的猫鼬模式如下:
const UserSchema = new Schema({
_id: {
type: String,
default: () => `usr_${generate()}`,
},
username: {
type: String,
unique: true,
},
})
以及以下内容:
const FollowSchema = new Schema({
_id: {
type: String,
default: () => `flw_${generate()}`
},
fromUser: {
type: String,
ref: "User",
required: true
},
targetUser: {
type: String,
ref: "User",
required: true
}
})
我最初的方法是在猫鼬用户模型中添加一个虚拟参数,例如docs状态:
UserSchema.virtual('following' {
ref: 'Follow',
localField: '_id',
foreignField: 'fromUser',
justOne: true
});
UserSchema.virtual('follower' {
ref: 'Follow',
localField: '_id',
foreignField: 'targetUser',
justOne: true
});
但是我还需要将该引用与动态fromUser或targetUser匹配,该动态fromUser或targetUser匹配发出请求的用户的userId。
任何想法如何使这项工作有效?我不介意更改架构。