最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

为saas建模mongoosemongoDB数据库的最佳方法是什么?

运维笔记admin8浏览0评论

为saas建模mongoose / mongoDB数据库的最佳方法是什么?

为saas建模mongoose / mongoDB数据库的最佳方法是什么?

我正在尝试为Saas应用程序建模,在该应用程序中,我将使用这些服务的不同公司。对于为这种类型的服务建模我的猫鼬数据库的最佳方法,我有点困惑。

所以模型就像

Company
  Name
  Users
    ->Roles (Admin,editor etc)
  Projects

这种应用程序建模的最佳方法是什么?

我应该为用户,项目等创建不同的模型,并将公司唯一ID附加到该公司内的所有用户或项目。同时引用公司模型中的这些用户或项目。就像是

//User is used as a separate model and is only referenced in company schema
var userSchema = new Schema({  
    Name  : String,
    Role: {
        type: String,
        enum: ['admin','reader', 'editor'],
        default: 'reader'
    },
    Company : { type: Schema.ObjectId, ref: 'Company' }
});
mongoose.model('User', userSchema);

var companySchema = new Schema({  
    Name  : String,
    Users : [
         { type: Schema.ObjectId, ref: 'User' }
    ],
    Projects : [
         { type: Schema.ObjectId, ref: 'Project' }
    ]
});

mongoose.model('Company', companySchema);

要么

只需引用公司模式中的用户和项目模式,而无需单独的模型

//userSchema is used as a child in company schema
var userSchema = new Schema({  
    Name  : String,
    Role: {
        type: String,
        enum: ['admin','reader', 'editor'],
        default: 'reader'
    },
});

var companySchema = new Schema({  
    Name  : String,
    Users : [
        userSchema 
    ],
    Projects : [
        projectSchema 
    ]
});

mongoose.model('Company', companySchema);

从长远来看,如果需要,可以轻松查询子文档,内存分配,将来的公共API风险,这是最好的方法吗?

如果它的第二种方式,那么我需要有id或那些子文档?我可以使用唯一的公司ID进行查询,然后在文档中找到相关公司后找到所需的东西吗?

回答如下:

没关系,从https://www.mongodb/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1系列文章中找到了非常详细的答案

发布评论

评论列表(0)

  1. 暂无评论