Ich weiß, dass es möglich ist, Instanzmethode für jedes Schema zu erstellen, aber gibt es eine Möglichkeit, Instanzaufruf zu erstellen, der sich auf alle Schemas bezieht.Gibt es eine Möglichkeit, in mongoose globalen Instanzaufruf für alle Schemas zu erstellen?
Antwort
Sie möchten möglicherweise eine Funktion erstellen und dann diese Funktion für alle Schema verwenden möchten.
Wenn ich Ihre Anforderung verstanden habe, dann müssen Sie eine Funktion in einer separaten Datei erstellen und diese Datei als Schema-Plugin hinzufügen.
Zum Beispiel:
in lastUpdate.js Datei eine Funktion erstellen, die
module.exports = exports = function lastUpdatePlugin (schema) {
schema.add({ updateTime: Date })
schema.pre('save', function (next) {
this.updateTime= new Date
next()
});
}
in user.js Schemadatei für verschiedenes Schema Verwendung wird funktionieren:
var lastUpdate = require('./lastUpdate');//load lastUpdate.js file
var User= new Schema({name: String, ... });
User.plugin(lastUpdate);
in bank.js Schemadatei:
var lastUpdate = require('./lastUpdate');//load lastUpdate.js file
var Bank= new Schema({bankName: String, ... });
Bank.plugin(lastUpdate);
Dann, wenn speichern user
und bank
dann automatisch aktualisiert updateTime
für jedes Schema
Ja, es ist auch ein gutes Beispiel, danke, aber es löst das Problem eigentlich nicht, mein Hauptproblem sind benutzerdefinierte Filter, wie der Aufruf von User.customWhere (...), der beim Aufruf User.where mit RegEx zum Beispiel aufrufen kann. – Shekspir
http://mongoosejs.com/docs/guide.html –
@SmitaAhinave können Sie bitte erklären, wo die Antwort suchen? Ich habe das schon mal gesehen. – Shekspir