J'essaie d'obtenir le middleware 'remove' qui fonctionne sur mongoose.Middleware en cascade de Mongoose, plusieurs niveaux
J'ai une base de données si j'ai:
'modules' -> 'modulesInst' -> 'assignments' -> 'studentAssignments'
Ainsi, lorsque les modules supprimer, il cascade de modulesInst ', et quand modulesInst supprime supprime' affectations de connexes, puis la même chose avec « les devoirs des élèves » .
Le problème est que je peux seulement le faire fonctionner à un niveau.
schéma de niveau supérieur et 'supprimer' middleware (module)
var modulesSchema = new Schema (
{
_id: Number,
moduleName: String,
moduleLeader: String
}
);
modulesSchema.pre('remove', function(next){
modulesInst.remove({modID: this._id}).exec();
next();
});
schéma de second niveau et 'Supprimer' middleare (moduleInst) [où le middleware cesse de cascade]
var modulesInstSchema = new Schema (
{
year: Number,
semester: String,
modID: [{ type: Schema.Types.Number, ref: 'Module' }],
}
);
modulesInstSchema.pre('remove', function (next) {
assignment.remove({modInsID: this._id}).exec();
next();
});
troisième niveau de schéma et middleware 'remove' (affectation) [le middleware ne se déclenche pas aussi bien]
var assignmentSchema = new Schema (
{
code: String,
assignName: String,
modInsID: [{ type: Schema.Types.Number, ref: 'ModuleInst' }],
}
);
assignmentSchema.pre('remove', function (next) {
studentAssign.remove({assID: this._id}).exec();
next();
});
Y at-il une astuce simple qui me manque pour rester en cascade? Comme la documentation n'est pas claire et ne peut pas trouver d'exemples.