Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB聊天模式_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript MongoDB聊天模式

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 },

我正在尝试MongoDB,作为一个起点,我正在为一个聊天应用程序创建一个架构,这个架构将来可能很容易扩展,所以我想知道从我在文档中看到的情况来看,这个架构是否正确。到目前为止,我有3个集合用户、房间、信息。此外,我还需要执行一些查询,例如从单独的房间获取所有消息,从特定用户获取所有消息,等等

用猫鼬设计:

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);