我有一个包含username字段的User模式。我希望这个字段是大小写敏感的,以便用户可以注册名称,如BobDylan。但是,我需要我的模式来验证新条目,以检查是否有重复项,区分大小写,比如bobdylan。
我的研究告诉我,我应该在模式中创建一个额外的字段来存储小写/大写版本,这样我就可以轻松地检查它是否是唯一的。我的问题是,我如何使用Mongoose API来实现这一点?
我尝试过使用set函数,例如:
UserSchema.path('username_lower_case').set(function(username_lower_case) {
return this.username.toLowerCase()
});但是,这个函数似乎没有运行。我基本上需要告诉username_lower_case,无论username是什么,都是小写的。
发布于 2012-12-25 02:05:45
一种方法是使用预保存钩子来完成此操作。
UserSchema.pre('save', function (next) {
this.username_lower_case = this.username && this.username.toLowerCase();
next();
});另一种方法是使username成为一个虚拟的:
UserSchema.virtual('username').set(function (value) {
this.username_raw = value;
this.username_lower_case = value && value.toLowerCase();
}).get(function () {
return this.username_raw;
});https://stackoverflow.com/questions/14023937
复制相似问题