我正在尝试为Saas应用程序建模,其中我将使用这些服务的不同公司。我对这种服务的mongoose数据库建模的最佳方式感到有些困惑。
所以模型就像
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进行查询,然后在文档中找到相关公司后找到所需的东西吗?
答案 0 :(得分:0)
没关系,从帖子系列https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1
中找到了非常详细的答案