jbl*_*lew 3 schema mongodb node.js express
我试图让用户向其他用户发送类似于 Facebook 和其他社交媒体平台的好友请求。我已经开始创建这个功能,但很快就卡住了,因为我是 mongoDB 和整个 Schema 的新手。
以下是我目前拥有的模型:
// User Schema
var UserSchema = new Schema({
_id: {
type: Number
},
name: {
type: String
},
username: {
type: String,
index: true
},
password: {
type: String,
required: true
},
email: {
type: String
},
friends: [{
friendName: {
type: Schema.ObjectId,
required: true,
ref: 'User'
},
duration: {
type: Number
}
}]
});
// Friendship Schema
var FriendshipSchema = new Schema({
participants: [{
type: Schema.Types.ObjectId,
ref: 'User'
}],
requestTo: {
type: Schema.Types.ObjectId,
ref: 'User'
},
accepted: {
type: Boolean,
default: false
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
var Friendship = module.exports = mongoose.model('Friendship', FriendshipSchema);
var User = module.exports = mongoose.model('User', UserSchema);
Run Code Online (Sandbox Code Playgroud)
这是我得到的。从这里开始,我不知道如何使用这些模式在 2 个用户之间建立友谊。我的最终目标是在网页上有一个按钮,可以向目标收件人发送好友请求,然后他们可以接受或拒绝该请求。
对此的任何帮助都会很棒,因为我不知道从这里开始使用这 2 个模式做什么。谢谢!
我们只需要采用一个模式,即 userSchema(正如 Israel 上面所说的,你只需要一个数组/对象来列出你在 userSchema 上的友谊)。但是我们需要添加另一个模式(说是friendRequestSchema)。
FriendRequest 架构将是: - ID 用户请求 (int) - ID 用户接收者 (int) - 状态 (int) //假设 1 = 请求,2 = 接受,3 = 拒绝
控制器应该来自用户 A 单击用户 B 页面上的“好友请求”按钮。
如果函数运行它会记录在friendRequest DB上,它会记录用户A(作为请求者)的ID,用户B的ID和请求状态。
如果请求状态 = 1,则用户 B 将收到通知,并给他两个选项,接受和拒绝。
如果用户按下按钮接受,则friendRequest DB 中的状态更新为=> 2(已接受)。然后,您必须调用另一个函数将用户 ID A 添加到用户 B 的好友列表中。反之亦然。然后,如果您想发出通知,也可以调用它。
否则用户 B 将按下拒绝(状态将为 => 3)然后通知它。
用户架构
var UserSchema = new Schema({
name: String,
username: {
type: String,
index: true
},
password: {
type: String,
required: true
},
email: String,
friendship: [String] });
Run Code Online (Sandbox Code Playgroud)
然后 FriendRequestschema
var FriendRequestSchema = new Schema({
requester: {
type: int,
required: true
},
recipient: {
type: int,
required: true
},
status:
type: int,
required: true });
Run Code Online (Sandbox Code Playgroud)
这只是为了让您知道它是如何工作的。关于 (sendrequest,block .etc) 的更复杂的方法你可以查看这个链接,它是 PHP 的流程,但你可以很容易地将它移到你的 js 中。希望对你有所帮助。
| 归档时间: |
|
| 查看次数: |
5416 次 |
| 最近记录: |