MongoDB集合/ Express.js用于“朋友请求”功能

时间:2013-06-25 21:51:49

标签: node.js mongodb express

我知道如何存储关系。每个用户都有一个填充了ID的friends数组。但是,我应该如何在MongoDB中的Express.js应用程序中发起朋友请求?

我正在考虑使用以下方式创建“通知”集合:

_id, userId, type, friendId, read

因此,当被请求的朋友登录时,他们可以看到他们自己要处理的所有通知......

还是那太荒谬了?

3 个答案:

答案 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。创建用户后与用户朋友关系。这或多或少都是我想要的方式。