Javascript MongoDB聊天模式
我正在尝试MongoDB,作为一个起点,我正在为一个聊天应用程序创建一个架构,这个架构将来可能很容易扩展,所以我想知道从我在文档中看到的情况来看,这个架构是否正确。到目前为止,我有3个集合用户、房间、信息。此外,我还需要执行一些查询,例如从单独的房间获取所有消息,从特定用户获取所有消息,等等 用猫鼬设计:Javascript MongoDB聊天模式,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试MongoDB,作为一个起点,我正在为一个聊天应用程序创建一个架构,这个架构将来可能很容易扩展,所以我想知道从我在文档中看到的情况来看,这个架构是否正确。到目前为止,我有3个集合用户、房间、信息。此外,我还需要执行一些查询,例如从单独的房间获取所有消息,从特定用户获取所有消息,等等 用猫鼬设计: var user = new mongoose.Schema({ username: { type: String, lowercase: true, unique: true },
var user = new mongoose.Schema({
username: { type: String, lowercase: true, unique: true },
email: { type: String, lowercase: true, unique: true },
password: String,
is_active: { type: Boolean, default: false },
});
var room = new mongoose.Schema({
name: { type: String, lowercase: true, unique: true },
topic: String,
users: [user],
messages: [message],
created_at: Date,
updated_at: { type: Date, default: Date.now },
});
var message = new mongoose.Schema({
room: room,
user: user,
message_line: String,
created_at: { type: Date, default: Date.now },
});
var User = mongoose.model('User', user);
var Room = mongoose.model('Room', room);
var Message = mongoose.model('Message', message);
嗨,既然这篇帖子问了6年以上,你对这个方法有意见吗?我觉得不错,希望你能回答你的问题来分享经验
//message model
'use strict';
import mongoose from 'mongoose';
var Schema = mongoose.Schema;
var ObjectId = Schema.Types.ObjectId;
var MessageSchema = new Schema({
send: {
type: ObjectId,
ref: 'User',
required: true
},
message: {
type: String,
required: true
},
date: {
type: Date
},
created_by: {
type: ObjectId,
ref: 'User',
required: true
},
thread: {
type: ObjectId,
ref: 'MsgThread',
required: true
},
is_deleted: [{
type: ObjectId,
ref: 'User'
}]
}, {
timestamps: {
createdAt: 'created_at',
updatedAt: 'last_updated_at'
}
});
export default mongoose.model('Message', MessageSchema);
//dont use rooms,,use thread like groupchat or personalChat
import mongoose from 'mongoose';
var Schema = mongoose.Schema;
var ObjectId = Schema.Types.ObjectId;
const s3 = require("../../utils/s3");
var MsgThreadSchema = new Schema({
users: [{
type: ObjectId,
ref: 'User'
}],
group_name: {
type: String
},
created_by: {
type: ObjectId,
ref: 'User'
},
community: {
type: ObjectId,
ref: 'Community'
},
image_url: {
type: String
}
}, {
timestamps: {
createdAt: 'created_at',
updatedAt: 'last_updated_at'
}
});
export default mongoose.model('MsgThread', MsgThreadSchema);