【发布时间】:2018-06-07 16:13:04
【问题描述】:
我正在尝试对一个 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 进行查询,然后在文档中找到相关公司后查找所需的东西吗?
【问题讨论】:
标签: node.js mongodb angular mongoose saas