Mongoose 猫鼬类型唯一,区分大小写

Mongoose 猫鼬类型唯一,区分大小写,mongoose,Mongoose,这是我的猫鼬模式,其中deptName是唯一的, 但我也希望它区分大小写,例如,如果xyz保存在db中,那么xyz不应该保存 var department = mongoose.Schema({ deptName: { type: String, unique: true, required: true }, deptHead: { type: mongoose.Schema.ObjectId,

这是我的猫鼬模式,其中deptName是唯一的, 但我也希望它区分大小写,例如,如果xyz保存在db中,那么xyz不应该保存

var department = mongoose.Schema({
    deptName: {
        type: String,
        unique: true,
        required: true
    },
    deptHead: {
        type: mongoose.Schema.ObjectId,
        ref: 'employee'
    },
    active: {
        type: Boolean,
        default: true
    }
});
试着在最短的时间内完成它。将
小写
添加到架构中,如下所示

var departmentSchema = mongoose.Schema({
    deptName: {
        type: String,
        unique: true,
        required: true,
        lowercase: true
    }
});
当您尝试将
XYZ
保存到
deptName
时。验证应失败,无法将此文档保存到集合中

但是,我在MongooseV4.4.3中使用以下代码对其进行了测试

var d = new Depart({
    deptName: 'XYZAA'
});

d.save(function(err) {
    if (err)
        console.log(err);
    else
        console.log('Save department successfully...');
});
它可以成功保存文档并将
XYZ
转换为
XYZ

{ "_id" : ObjectId("56c3dae36a4d4f041548f7e0"), "deptName" : "xyz", "__v" : 0 }
另一种自定义验证的方法如下

var departmentSchema = mongoose.Schema({
    deptName: {
        type: String,
        unique: true,
        required: true,
        validate: {
          validator: function(v) {
            if (v && v.length)
                var re = /^[a-z]$/i; 
                return re.test(v);
          },
        }
    }
});
当尝试将
XYZ
保存到
deptname
时,将出现验证错误

{ [ValidationError: Depart validation failed]
  message: 'Depart validation failed',
  name: 'ValidationError',
  errors:
   { deptName:
      { [ValidatorError: Validator failed for path `deptName` with value `XYZ`]
        properties: [Object],
        message: 'Validator failed for path `deptName` with value `XYZ`',
        name: 'ValidatorError',
        kind: 'user defined',
        path: 'deptName',
        value: 'XYZ' } } }

我想你是说不区分大小写?像这个问题:@johnyhk,我在MongooseV4.4.3中测试
小写
,它将
XYZ
转换为
XYZ
,并将其保存到db。。。也许自定义验证应该更好。。。