導入
得るそして セットこれらは、基礎となる生のドキュメント内のキーと値によって定義されたプロパティを取得および設定する方法を変更するのに役立ちます。.
セッター
セット これらを使用すると、mongoose ドキュメント データが生の MongoDB ドキュメントに到達して実際のキーに値として設定される前に、それを変換できます。.
ウェブサイトのユーザー登録を実装するとします。ユーザーはメールアドレスとパスワードを入力し、それらはMongoDBに保存されます。メールアドレスは、1つのメールアドレスが複数のアカウントを持つことがないよう、小文字に正規化された文字列です。例えば、[email protected]は、[email protected]と[email protected]という2つのアカウントに登録できます。.
Mongooseのセッターを使えば、メールの大文字と小文字の正規化を簡単に設定できます。以下のスニペットでは、セッター(および受信者)がスキーマで定義されていることに注目してください。
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]'上記のように、セッターを使用すると、データが生の mongodb ドキュメントに到達する前にデータを変換し、実際のキーに値として設定することができます。.
ゲッター
得る これらを使用すると、生の MongoDB ドキュメントから表示される内容に移動するときに、データ ビューを変換できます。.
例えば、クレジットカード番号を保存していて、下4桁以外の情報をMongooseユーザーから隠したいとします。これは、受信者を次のように定義することで実現できます(受信者はスキーマで定義されることに注意してください)。
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'
});結果
セッターは、基になる生データを変更することを目的としています。ゲッターは、基になる生データをユーザーが期待する形式に変換することを目的としています(ただし、生データレベルでの変更は行いません)。どちらもスキーマ定義で定義されています。.









