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行):)