如何在猫鼬节点js中为朋友创建模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在猫鼬节点js中为朋友创建模式相关的知识,希望对你有一定的参考价值。

我正在制作一个用户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发送请求,然后将完成两个数据输入。如何解决此问题?我只想要一个可以存储用户之间的友谊以及他们之间的状态的架构。我的意思是,如果请求正在等待或接受,或者他们现在成为了朋友。请更正我

答案
[查看类似的帖子:How do I perform the SQL Join equivalent in MongoDB?

[有很多方法[-很多]-但是请不要误解,您正在为”联接表”建模。

这里是一个建议:使用单个Friend模型而不是两个。我不明白为什么(基于描述)无法实现您的目标。

以上是关于如何在猫鼬节点js中为朋友创建模式的主要内容,如果未能解决你的问题,请参考以下文章

在猫鼬中为朋友模式建模?

如何在猫鼬和节点js中的同一记录上填充两个集合

Nest.js - 在猫鼬模式中创建索引

如何在猫鼬中为具有孩子的属性分配“null”或“undefined”

如何在猫鼬中编写键值对对象模式

如何在猫鼬中自动创建必填字段