如何在猫鼬节点js

时间:2020-01-25 15:16:08

标签: javascript node.js mongodb

我正在开发一个应用程序,其中用户users可以彼此成为friends。 所以我这样设计Friends

const friendsSchema = new Schema({
  requester: { type: Schema.Types.ObjectId, ref: 'Users'},
  recipient: { type: Schema.Types.ObjectId, ref: 'Users'},
  status: {
    type: Number,
    enums: [
        0,    //'add friend',
        1,    //'requested',
        2,    //'pending',
        3,    //'friends'
    ]
  }
}, {timestamps: true})
module.exports = mongoose.model('Friends', friendsSchema)

如果userAuserB发送请求,则我将执行以下操作:

const docA = await Friend.findOneAndUpdate(
        { requester: UserA, recipient: UserB },
        { $set: { status: 1 }},
        { upsert: true, new: true }
    )
    const docB = await Friend.findOneAndUpdate(
        { recipient: UserA, requester: UserB },
        { $set: { status: 2 }},
        { upsert: true, new: true }

这意味着,如果userAuserB发送请求,则字段模式中现在将有两个新条目。 现在的问题是,假设我想获取用户的所有朋友的列表。然后,如果我在上面的数据库中查询userA的朋友,那么我将获得两个数据,但与我告诉过的用户相同userA发送请求后,将完成两个数据输入。如何解决此问题?我只想要一个可以存储用户之间的友谊以及他们之间的状态的架构。我的意思是,请求是待处理的还是被接受的,或者他们现在成为了朋友。请纠正我

0 个答案:

没有答案
相关问题