Javascript 使用Express/MongoDB构建收件箱系统

Javascript 使用Express/MongoDB构建收件箱系统,javascript,node.js,mongodb,express,ejs,Javascript,Node.js,Mongodb,Express,Ejs,我一直在为我的一个个人项目开发一个出租公寓的应用程序。我一直想知道如何为当前使用mongodb作为数据库的应用程序构建/实现收件箱系统 在这样一个功能中,什么是重要的?是否可以定义一个名为messages的模式 var MessageSchema = new mongoose.Schema({ message: String, sender : { id : { type : mongoose.Schema.Types.ObjectId,

我一直在为我的一个个人项目开发一个出租公寓的应用程序。我一直想知道如何为当前使用mongodb作为数据库的应用程序构建/实现收件箱系统

在这样一个功能中,什么是重要的?是否可以定义一个名为messages的模式

var MessageSchema = new mongoose.Schema({
  message: String,
  sender : {
        id : {
            type : mongoose.Schema.Types.ObjectId,
            ref: "User"
          },
         username: String
    }
  recipient : {
        id : {
            type : mongoose.Schema.Types.ObjectId,
            ref: "User"
          },
         username: String
    }
)};

如果我向用户y发送一条消息,那么它将被存储为recipient,x值将是发送者。当我想呈现一个名为inbox的页面时,我可以执行消息处理。查找({req.user.\u id)来对所有消息进行排序吗?我对架构设计有点迷茫。

对于架构,您可能需要这样的内容:

const messageSchema=new mongoose.Schema({
主题:字符串,
正文:字符串,
可见:布尔,
发件人:{
类型:mongoose.Schema.Types.ObjectId,
参考:“用户”
}
收件人:{
类型:mongoose.Schema.Types.ObjectId,
参考:“用户”
}
})
const userSchema=new mongoose.Schema({
用户名:String,
电子邮件:Boolean,
类型:字符串
})
var Message=mongoose.model('Message',messageSchema);

var User=mongoose.model('User',userSchema);
@Ozan,这回答了你的问题吗?在某种程度上回答了。我担心使用这样的模式是否真的安全。为什么会不安全?请记住,你不需要公开模式中的任何内容。假设用户x正在查看消息,路由是app.get('messages/:messageId')在将消息呈现到前端之前,我是否必须使用中间件来检查消息的所有权?否则,任何具有消息id的人都可以正确读取任何消息?是的,可以使用中间件,但是,我会在处理程序的第一行检查“messages/:messageId”。我们使用Passport进行用户管理,它会将用户对象放入我不同意这个请求。