我对如何存储关系有一个想法。每个用户都有一个friends
填充了 ID 的数组。但是,我应该如何在 MongoDB 的 Express.js 应用程序中发起好友请求?
我正在考虑创建一个“通知”集合:
_id, userId, type, friendId, read
因此,当被请求的朋友登录时,他们可以看到自己要处理的所有通知...
或者这很荒谬?
对于此类通知,我所做的如下:
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
字段用作可选。
听起来很合理。但我的方法会有点不同。我会将通知存储在用户数据库本身中。就像是
username
dob
...
notifications[[type: 'friend', read: 0, request_from: '22sd300sdf45003425asz'], ...]
...
这样,您不必在每次页面加载时都进行 db 调用。一旦你初始化一个会话(我使用护照),它就会在那里,已经为模板做好了准备。在用户采取有效行动后,我可以删除它或其他任何东西。
但同样,它取决于需要。做最适合你的事!
如果您将其存储在用户通行证会话中(前面提到的解决方案),您将无法再收到通知,因为它是标题中的静态信息并且不直接连接到文档存储。
最好的办法是让它拥有自己的商店。
{Id:ObjectId, for_user:String, sent from:String, status:Boolean}
也许您可以最初将状态设置为 null,然后在用户接受或拒绝时将其设置为 true 或 false。创建用户到用户好友关系后。这或多或少是我要做的事情。