猫鼬用动态参数填充虚拟

时间:2020-10-29 22:00:35

标签: node.js mongodb mongoose mongoose-schema

我正在一个具有关注者/以下架构的平台中工作。

我想从发出请求的用户的角度获得其他用户的关注者/关注者状态。这意味着,每当一个请求由一个用户发出,并且在响应中有其他用户出现时,我都希望响应中包括跟踪或跟随那些发出请求的用户。

例如,用户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。

任何想法如何使这项工作有效?我不介意更改架构。

0 个答案:

没有答案