저는 서비스를 사용하는 다른 회사가있는 Saas 응용 프로그램을 모델링하려고합니다. 나는이 유형의 서비스를 위해 내 몽구스 데이터베이스를 모델링하는 최선의 방법에 대해 다소 혼란 스럽다. saong을위한 mongoose/mongoDB 데이터베이스를 모델링하는 가장 좋은 방법은 무엇입니까
그래서이 모델은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를 사용하여 상대 회사가 문서 내에서 발견되면 필요한 항목을 찾을 수 있습니까?