为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系列文章中找到了非常详细的答案
为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系列文章中找到了非常详细的答案