Einführung
erhaltenUnd SatzSie helfen Ihnen dabei, die Art und Weise zu ändern, wie Eigenschaften, die durch Schlüssel und Werte im zugrunde liegenden Rohdokument definiert sind, abgerufen und festgelegt werden.
Zuspieler
Satz Sie ermöglichen es Ihnen, Mongoose-Dokumentdaten zu transformieren, bevor sie das rohe MongoDB-Dokument erreichen und einem tatsächlichen Schlüssel als Wert zugewiesen werden.
Angenommen, Sie implementieren die Benutzerregistrierung für eine Website. Benutzer geben eine E-Mail-Adresse und ein Passwort an, die in MongoDB gespeichert werden. Die E-Mail-Adresse ist ein String, den Sie in Kleinbuchstaben umwandeln möchten, damit eine E-Mail-Adresse nicht für mehrere Konten verwendet werden kann. Beispielsweise könnte die E-Mail-Adresse [email protected] für zwei Konten registriert sein: [email protected] und [email protected].
Die Normalisierung von E-Mail-Adressen in Kleinbuchstaben lässt sich einfach über Mongoose-Setter konfigurieren. Beachten Sie im folgenden Codeausschnitt, dass die Setter (sowie die Empfänger) im Schema definiert sind:
function toLower (v) {
return v.toLowerCase();
}
var UserSchema = new Schema({
email: { type: String, set: toLower }
});
var User = mongoose.model('User', UserSchema);
var user = new User({email: '[email protected]'});
console.log(user.email); // '[email protected]'Wie Sie oben sehen können, ermöglichen Setter die Transformation von Daten, bevor diese das rohe MongoDB-Dokument erreichen, und die Zuweisung eines Wertes zu einem tatsächlichen Schlüssel.
Getter
erhalten Sie ermöglichen es Ihnen, Datenansichten zu transformieren, während Sie vom rohen MongoDB-Dokument zu dem navigieren, was Sie sehen.
Angenommen, Sie speichern eine Kreditkartennummer und möchten für den Mongoose-Benutzer alles außer den letzten vier Ziffern verbergen. Dies erreichen Sie, indem Sie einen Empfänger wie folgt definieren (beachten Sie, dass Empfänger im Schema definiert werden):
function obfuscate (cc) {
return '****-****-****-' + cc.slice(cc.length-4, cc.length);
}
var AccountSchema = new Schema({
creditCardNumber: { type: String, get: obfuscate }
});
var Account = mongoose.model('Account', AccountSchema);
Account.findById( someId, function (err, found) {
console.log(found.creditCardNumber); // '****-****-****-1234'
});Ergebnis
Setter dienen dazu, die zugrundeliegenden Rohdaten zu verändern. Getter hingegen transformieren die Rohdaten (ohne sie auf Rohdatenebene zu verändern) in das vom Benutzer erwartete Format. Beide sind in der Schemadefinition festgelegt.









