2017-12-27 28 views
-1

저는 서비스를 사용하는 다른 회사가있는 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를 사용하여 상대 회사가 문서 내에서 발견되면 필요한 항목을 찾을 수 있습니까?

답변