私は、オプションの最小の長さと検証とユニークな文字列を望んでいた同じ苦境に走った
ので、私はトリックを行うために複数のバリデータを使用しました「事前に」空の文字列が一意ではありませんので、空の/ NULL値ありませんので、重複を削除するために保存方法を
var validateUserNameLength = function (username) {
if (username && username.length !== '') {
return username.length >= 3;
}
return true;
};
var validateUserNameFormat = function (username) {
if (username && username.length) {
return username !== 'foo;
}
return true;
}
var validateUserName= [
{ validator: validateUserNameLength , msg: 'short UserName' },
{ validator: validateUserNameFormat , msg: 'No Foo name' }
];
var UserSchema= mongoose.Schema({
userName: {
type: String,
lowercase: true,
trim: true,
index: {
unique: true,
sparse: true
},
validate: validateUserName,
maxlength: [20, 'long UserName']
},
});
UserSchema.pre('save', function (next) {
if (this.userName === null || this.userName === '') {
this.userName = undefined;
}
next();
})