Mongoose 猫鼬类型唯一,区分大小写
这是我的猫鼬模式,其中deptName是唯一的, 但我也希望它区分大小写,例如,如果xyz保存在db中,那么xyz不应该保存Mongoose 猫鼬类型唯一,区分大小写,mongoose,Mongoose,这是我的猫鼬模式,其中deptName是唯一的, 但我也希望它区分大小写,例如,如果xyz保存在db中,那么xyz不应该保存 var department = mongoose.Schema({ deptName: { type: String, unique: true, required: true }, deptHead: { type: mongoose.Schema.ObjectId,
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。。。也许自定义验证应该更好。。。