Mongo에서 첫 번째 데이터베이스를 개발 중입니다. Mongoose를 사용하여 모델을 만듭니다. 여러 관계를 하나씩 구현하고 싶습니다. 세 가지 모델이 있습니다 : 사용자, 그룹 및 역할 모델. 사용자는 여러 그룹에 속할 수 있으며 동일한 그룹에 여러 역할을 가질 수 있습니다. 예를 들어, John은 그룹 1과 2에 속해 있습니다. 그룹 1의 Juan은 관리자이고 그룹 2는 관리자와 수퍼 유저입니다. 내가 관계형 스키마를 보여 아래 :Nodejs : MongoDB의 복수 대다수
UserModel
const roleSchema = new Schema({
name: {type: String, unique: true},
code: {type: String, unique: true},
description: String
}, {
timestamps: {createdAt: 'created_at', updatedAt: 'updated_at', deleteAt: 'delete_at'}
});
const RoleModel=mongoose.model('role', roleSchema);
const userSchema = new Schema({
username: {type: String, unique: true},
first_name: String,
middle_name: String,
first_surname: String,
second_surname: String,
email: String,
password: String
}, {
timestamps: {createdAt: 'created_at', updatedAt: 'updated_at', deleteAt: 'delete_at'}
});
const UserModel = mongoose.model('user', userSchema);
역할 모델을 :
을 나는 후속 모델을 만들 수 있습니다
GroupModel
const groupSchema = new Schema({
name: {type: String, unique: true}
}, {
timestamps: {createdAt: 'created_at', updatedAt: 'updated_at', deleteAt: 'delete_at'}
});
const GroupSchema = mongoose.model('group', groupSchema);
GroupUserRoleModel
const groupuserroleSchema = new Schema({
role: {type: Schema.Types.ObjectID, ref: 'role'},
user: {type: Schema.Types.ObjectID, ref: 'user'},
group: {type: Schema.Types.ObjectID, ref: 'group'}
});
const GroupUserRoleModel = mongoose.model('group_user_role', groupuserroleSchema);
내 질문은 :
- 이 확인을 구현?
- GroupUserRole 문서를 만들려면 어떻게해야합니까? 나는 방법에 대한 정보를 볼 수있다
는 몽구스 (Populate)에 채울 수 있지만 두 모델 도와 감사 사이에 하나의 관계 우주선이있다.
답장을 보내 주셔서 감사합니다. 하지만 다음 질문이 있습니다. Odonno와 1000 명의 사용자가 그룹 1과 그룹 2에 더 많이 속한다고 상상해보십시오. 그룹 1에서 모든이 사용자는 관리자 및 사용자 역할을 담당하고 그룹 2는 관리자 역할 만 담당합니다. 그룹 1의 역할을 업데이트하려는 경우 (예 : 사용자 역할 삭제) 모든 사용자로 이동하여 그룹 1에 속하는지 그리고 사용자 역할이 있는지 확인해야합니다. 이 게시물에 따르면 http://stackoverflow.com/questions/5373198/mongodb-relationships-embed-or-reference), 내 모든 관계가 다른 것에 의존하기 때문에 나는 포함하지 말고 참조를 사용해야한다고 생각합니다. – arisolarpower
분명히 그것은 당신의 필요에 달려 있습니다. Group과 Role 사이에 의존성이 있다면 그룹에 대한 콜렉션을 생성하고 그룹 문서의 objectId를 사용하는 것이 더 재미 있습니다. 여기에 좋은 예가 있습니다. http://mongoosejs.com/docs/2.7.x/docs/populate.html – Odonno
시간 내 주셔서 감사 드리며 많은 도움을 받았습니다. – arisolarpower