Ich lerne gerade Mongoose, und ich habe Parent
und Child
Dokumente wie folgt modelliert ..korrekte Art und Weise Feld von Unterlagen in Mongoose verwenden
var parent = new Schema({
children: [{ type: Schema.Types.ObjectId, ref: 'Child' }],
});
var Parent = db.model('Parent', parent);
var child = new Schema({
_owner: { type: Schema.Types.ObjectId, ref: 'Parent' },
});
var Child = db.model('Child', child);
Wenn ich entfernen die Parent
Ich möchte auch alle entfernen die Objekte Child
, auf die im Feld children
verwiesen wird. Another question auf Stackoverflow stellt fest, dass die pre
Middleware-Funktion der Eltern können so ...
parent.pre('remove', function(next) {
Child.remove({_owner: this._id}).exec();
next();
});
geschrieben werden, die, dass alle untergeordneten Objekte werden gelöscht gewährleisten sollte. In diesem Fall gibt es jedoch einen Grund, das Array children
im Parent
-Schema zu haben? Könnte ich auch Operationen zum Erstellen/Lesen/Aktualisieren/Löschen nicht ausführen? Zum Beispiel, wenn ich alle Kinder möchte, die ich tun könnte?
Child.find({_owner: user._id}).exec(function(err, results) { ... };
Alle Beispiele, die ich von Beziehungen ‚hasMany‘ Mungo gesehen habe verfügen über eine wenn auch ‚Kinder‘ Array, zeigen aber nicht, wie es dann verwendet wird. Kann jemand ein Beispiel geben oder einen Zweck dafür geben?
Danke! Wenn ich also verstehe, dass ich die refs in einem Array aufbewahre, kann ich sie abrufen, indem ich 'populate' aufruft, anstatt jedes Kind mit einer Abfrage auf dem Kindmodell abzurufen. Aber abgesehen davon, gibt es keinen Grund, ein Kind-Array zu pflegen. – CSharp
Ja, bevölkert tut diese Abfragen für Sie so sehr praktisch, wenn Sie alle Eltern eines Elternteils abholen wollen :) – raubas
Großartig! Danke für die Klarstellung – CSharp