MongoDB聊天模式

问题描述 投票:7回答:1

我正在尝试MongoDB,从头开始,我为聊天应用程序创建了一个架构,将来可能很容易扩展,因此我想知道从我在文档中看到的内容是否正确。到目前为止,我有3个集合User,Room,Message。我还需要执行一些查询,例如从特定房间获取所有消息,从特定用户获取所有消息,等等

用猫鼬设计:

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);
javascript node.js mongodb mongoose
1个回答
0
投票
//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);
© www.soinside.com 2019 - 2024. All rights reserved.