不区分大小写的enum mongoose / mongoDB

时间:2017-08-24 18:46:11

标签: node.js mongodb mongoose enums

在我的user.js模型中,用户架构如下:

In [1627]: if (df.loc[df['Bank Name'] == 'JPM', 'Weekly Cost'] < 100).item():
      ...:     df['Weekly Cost'] *= 10

现在,当用户传递男性时创建新用户,同时成功创建了性别文档。但是在男性,男性的情况下,它会失败。 怎么能让它不区分大小写?

我觉得下面的解决方案并不严谨,必须有一些更好的方法。请帮忙。

let gender = {
    values: ['male', 'female'],
    message: '`{VALUE}` is not a valid gender.'
};

let userSchema = new Schema({
    "gender": {
        type: String,
        lowercase: true,
        enum: gender,
        required: [true, 'Please tell your gender.']
    }
});

1 个答案:

答案 0 :(得分:0)

您可以使用自定义验证器将字符串的 toLowerCase() 版本与枚举中定义的集合进行比较。

userSchema.path('gender').validate((genderValue) => {
    let genders = ["male", "female"]
    return genders.includes(genderValue.toLowerCase())
}, 'Invalid gender')