MongoDB 中的 Getter 和 Setter

0 股票
0
0
0
0

介绍

得到它们可以帮助您更改如何检索和设置底层原始文档中由键和值定义的属性。.

二传手

它们允许您在 mongoose 文档数据到达原始 MongoDB 文档并将其设置为实际键的值之前对其进行转换。.

假设您正在为一个网站实现用户注册功能。用户提供电子邮件地址和密码,这些信息存储在 MongoDB 中。电子邮件地址是一个字符串,您需要将其规范化为小写,以防止一个电子邮件地址对应多个帐户。例如,[email protected] 可能通过 [email protected][email protected] 两个帐户进行注册。.

您可以通过 Mongoose 的 setter 轻松配置电子邮件地址的大小写规范化。请注意,在以下代码片段中,setter(以及收件人)均在 Schema 中定义:

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]'

如上所示,setter 允许您在数据到达原始 mongodb 文档之前对其进行转换,并将其设置为实际键的值。.

获取器

得到 它们允许您在从原始 MongoDB 文档导航到您所看到的内容的过程中转换数据视图。.

假设你要存储一个信用卡号,并且你想对 Mongoose 用户隐藏除最后 4 位数字之外的所有内容。你可以通过定义一个接收者来实现这一点,如下所示(再次注意,接收者是在 Schema 中定义的):

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'
});

结果

Setter 方法用于修改底层原始数据。Getter 方法用于转换(但不修改原始数据本身)底层原始数据,使其符合用户预期。两者都在模式定义中定义。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢