Node.js MongoDB collection/Express.js用于;“朋友请求”;功能
我有一个如何存储关系的想法。每个用户都有一个Node.js MongoDB collection/Express.js用于;“朋友请求”;功能,node.js,mongodb,express,Node.js,Mongodb,Express,我有一个如何存储关系的想法。每个用户都有一个friends数组,其中填充了ID。但是,我应该如何在MongoDB的Express.js应用程序中启动好友请求 我正在考虑创建一个“通知”集合,其中包括: \u id,userId,type,friendId,read 因此,当被请求的朋友登录时,他们可以看到自己要处理的所有通知 还是说这很荒谬?听起来很合理。但我的方法会有点不同。我会将通知存储在用户数据库本身中。差不多 username dob ... notifications[[type: '
friends
数组,其中填充了ID。但是,我应该如何在MongoDB的Express.js应用程序中启动好友请求
我正在考虑创建一个“通知”集合,其中包括:
\u id,userId,type,friendId,read
因此,当被请求的朋友登录时,他们可以看到自己要处理的所有通知
还是说这很荒谬?听起来很合理。但我的方法会有点不同。我会将通知存储在用户数据库本身中。差不多
username
dob
...
notifications[[type: 'friend', read: 0, request_from: '22sd300sdf45003425asz'], ...]
...
这样,您就不必在每次页面加载时都进行db调用。一旦您初始化一个会话(我使用passport),它就会在那里,已经为模板做好了准备。在用户执行有效操作后,我可以删除它或其他任何内容
但同样,这取决于需要。做最适合你的事 如果您将其存储在用户passport会话(前面提到的解决方案)中,您将无法再收到通知,因为它是标头中的静态信息,并且没有直接连接到文档存储 最好的办法是让它拥有自己的商店
{Id:ObjectId, for_user:String, sent from:String, status:Boolean}
也许您可以先将状态设置为null,然后在用户接受或拒绝时将其设置为true或false。创建用户对用户的朋友关系后。我差不多就是这样做的 对于此类通知,我所做的如下:
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,我使用了
字段作为通知类型,如follow、liked等,并使用description
字段作为可选字段。也在考虑这一点!我如何在模式中模拟它var userSchema=mongoose.Schema({username:String,password:String,interest:Array,email:String,avatar:String,friends:Array,notifications:Array?//对象数组?})代码>检查第一个代码块(最后5行):)