Ich entwickle meine erste Datenbank in Mongo. Ich verwende Mongoose, um die Modelle zu erstellen. Ich möchte eine Mehrfachbeziehung eins zu vielen implementieren. Es gibt drei Modelle: Benutzer, Gruppe und Rollenmodell. Ein Benutzer kann mehreren Gruppen angehören und mehrere Rollen in derselben Gruppe haben. Zum Beispiel gehört John zu Gruppe 1 und 2. Juan in Gruppe 1 ist Administrator und die Gruppe 2 ist Administrator und Superuser. Im Folgenden werde ich das relationale Schema zeigen:Nodejs: Mehrere Eins zu viele in MongoDB
habe ich die Nachfolgemodelle erstellen:
UserModel
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);
Rolemodel
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);
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);
Meine Fragen sind:
- Das OK die Implementierungen?
- Wenn ich ein GroupUserRole-Dokument erstellen möchte, wie geht das?
Ich habe Informationen über die Methode gesehen bevölkern in Mungo (Populate), aber nur gibt es eine Beziehung Schiff zwischen zwei Modellen Dank für Ihre Hilfe.
Zuerst danke für Ihre Antwort. Aber ich habe die nächsten Fragen: Stellen Sie sich vor, dass Odonno und 1000 Benutzer mehr Gruppe 1 und Gruppe 2 gehören. In der Gruppe 1 haben alle diese Benutzer die Rolle von Admin und Benutzer, und Gruppe 2 nur Admin-Rolle. Wenn ich die Rollen in Gruppe 1 aktualisieren möchte, zum Beispiel die Benutzerrolle löschen, müssten alle Benutzer gehen und prüfen, ob sie zur Gruppe 1 gehören und ob Sie die Benutzerrolle haben. Nach diesem Beitrag http://stackoverflow.com/questions/5373198/mongodb-relationships-embed-or-reference), ich denke, ich sollte Referenzen eher als einbetten, da alle meine Beziehungen von anderen abhängig sind. – arisolarpower
Offensichtlich hängt es von Ihren Bedürfnissen ab. Wenn Sie eine Abhängigkeit zwischen Gruppe und Rolle haben, ist es viel interessanter, eine Sammlung für die Gruppe zu erstellen und die Objekt-ID von Gruppendokumenten zu verwenden, wie Sie sagten, Referenzen. Sie haben ein gutes Beispiel hier: http://mongoosejs.com/docs/2.7.x/docs/populate.html – Odonno
danke für Ihre Zeit, Sie haben mir sehr geholfen – arisolarpower