如何在猫鼬节点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)
如果userA
向userB
发送请求,则我将执行以下操作:
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
这意味着,如果userA
向userB
发送请求,则字段模式中现在将有两个新条目。现在的问题是,假设我想获取用户的所有朋友的列表。然后,如果我在上面的数据库中查询userA
的朋友,那么我将获得两个数据,但是与我告诉你的相同userA
发送请求,然后将完成两个数据输入。如何解决此问题?我只想要一个可以存储用户之间的友谊以及他们之间的状态的架构。我的意思是,如果请求正在等待或接受,或者他们现在成为了朋友。请更正我
答案
[查看类似的帖子:How do I perform the SQL Join equivalent in MongoDB?[有很多方法[-很多]-但是请不要误解,您正在为”联接表”建模。
这里是一个建议:使用单个Friend
模型而不是两个。我不明白为什么(基于描述)无法实现您的目标。
以上是关于如何在猫鼬节点js中为朋友创建模式的主要内容,如果未能解决你的问题,请参考以下文章