我知道如何存储关系。每个用户都有一个填充了ID的friends
数组。但是,我应该如何在MongoDB中的Express.js应用程序中发起朋友请求?
我正在考虑使用以下方式创建“通知”集合:
_id, userId, type, friendId, read
因此,当被请求的朋友登录时,他们可以看到他们自己要处理的所有通知......
还是那太荒谬了?
答案 0 :(得分:1)
对于此类通知,我所做的如下:
var notificationSchema = mongoose.Schema({
to:{
type: mongoose.Schema.Types.ObjectId, ref: 'User'
},
from:{
type: mongoose.Schema.Types.ObjectId, ref: 'User'
},
for: {
type: String
},
status: {
type: String,
default: "Not Seen"
},
description:{
type: String
}
},{ timestamps: { createdAt: 'created_at' }
});
我已经保存往返(用户)的_id,其中我使用for
字段作为通知类型,例如关注,喜欢等,并使用description
字段作为选项。
答案 1 :(得分:0)
听起来很合理。但我的方法会有所不同。我会将通知存储在用户db本身中。像
这样的东西username
dob
...
notifications[[type: 'friend', read: 0, request_from: '22sd300sdf45003425asz'], ...]
...
这样,您不必在每次加载页面时进行db调用。一旦你初始化一个会话(我使用护照),它就会在那里准备好模板。在用户执行了有效操作后,我可以删除它或其他任何内容。
但同样,它依赖于需要。做最适合你的事情!
答案 2 :(得分:0)
如果将其存储在用户通行证会话(前面提到的解决方案)中,您将无法再收到通知,因为它是标题中的静态信息,而不是直接连接到文档存储。
最好的方法是让它拥有自己的商店。
{Id:ObjectId, for_user:String, sent from:String, status:Boolean}
也许您最初可以将状态设置为null,然后在用户接受或拒绝它时将其设置为true或false。创建用户后与用户朋友关系。这或多或少都是我想要的方式。