mongoose 在MongoDB中存储来自聊天的消息

rsaldnfx  于 2023-06-30  发布在  Go
关注(0)|答案(1)|浏览(147)

我是一名学生,正在为一家虚构的律师事务所构建一个项目,我试图找出使用mongoDB/mongoose在后端存储律师和客户之间所有聊天消息的最佳方法。这是我当前的schema:

const mongoose = require("mongoose");
const { v4: uuidv4 } = require("uuid");

const chatSchema = new mongoose.Schema({
  id: { type: String, default: uuidv4 },
  customer: Object,
  attorney: Object,
  log: [
    {
      by: String,
      sent: Date,
      message: String,
    },
  ],
  createdAt: { type: Date, default: Date.now },
  UpdatedAt: Date,
});

const Chat = mongoose.model("chats", chatSchema);

module.exports = Chat;

什么是最好的方式来实现这一点,这样我就可以轻松地访问前端的消息,并能够在相同的2人或2个不同的人之间创建一个新的聊天,他们的消息被正确地分配给他们?
我尝试为聊天创建一个模式,到目前为止,我已经能够将新的聊天保存到我的集合中。我感到困惑的是如何确保邮件保存在这个集合中,并且每个邮件和邮件发件人都保存在一起。

sq1bmfud

sq1bmfud1#

您可以为客户和律师创建一个单独的模式userSchema,并在chatSchema中引用它们。

const userSchema = new mongoose.Schema({
  name: String,
  category: String, // client/attorney
  // add more fields if you want to
});

const chatSchema = new mongoose.Schema({
  id: { type: String, default: uuidv4 },
  customer: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
  attorney: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
  log: [
    {
      by: { type: mongoose.Schema.Types.ObjectId, ref: "User" },
      sent: { type: Date, default: Date.now },
      message: String,
    }
  ],
  createdAt: { type: Date, default: Date.now },
  updatedAt: Date,
});

const Chat = mongoose.model("Chat", chatSchema);
const User = mongoose.model("User", userSchema);

相关问题