首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose getter /getter用于归一化数据

Mongoose getter /getter用于归一化数据
EN

Stack Overflow用户
提问于 2012-12-25 01:00:52
回答 1查看 4.3K关注 0票数 7

我有一个包含username字段的User模式。我希望这个字段是大小写敏感的,以便用户可以注册名称,如BobDylan。但是,我需要我的模式来验证新条目,以检查是否有重复项,区分大小写,比如bobdylan

我的研究告诉我,我应该在模式中创建一个额外的字段来存储小写/大写版本,这样我就可以轻松地检查它是否是唯一的。我的问题是,我如何使用Mongoose API来实现这一点?

我尝试过使用set函数,例如:

代码语言:javascript
复制
UserSchema.path('username_lower_case').set(function(username_lower_case) {
  return this.username.toLowerCase()
});

但是,这个函数似乎没有运行。我基本上需要告诉username_lower_case,无论username是什么,都是小写的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-25 02:05:45

一种方法是使用预保存钩子来完成此操作。

代码语言:javascript
复制
UserSchema.pre('save', function (next) {
    this.username_lower_case = this.username && this.username.toLowerCase();
    next();
});

另一种方法是使username成为一个虚拟的:

代码语言:javascript
复制
UserSchema.virtual('username').set(function (value) {
    this.username_raw = value;
    this.username_lower_case = value && value.toLowerCase();
}).get(function () {
    return this.username_raw;
});
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14023937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档