我正在使用(angularjs,bootstrap)开发我自己的网站,用于数据库的后端(mongodb,mongoose层)的前端(node,express)。
我有一个注册表单,在那个表单中我想检查当有人试图创建新帐户时电子邮件还没有被删除,所以我希望我的注册api检查提交的电子邮件是否已经没有以前被采取过。
我现在正在使用此验证器 https://github.com/ctavan/express-validator#validation-by-schema这是我的代码:
var vadlidateRegUser= function (req,res,next) {
req.checkQuery('UserName','Username must contain letters and numbers only').isAlphanumeric().notEmpty();
req.checkQuery('Email','Email should have a valid syntax e.g: example@example.com')
.isEmail().notEmpty();
var error = req.validationErrors();
if(!error){
next();
}else {
res.json({success:false, message:error});
}
}
现在我想查一下验证器,看看电子邮件是否是唯一的,如下所示:
req.checkQuery('Email','Email should have a valid syntax e.g: example@example.com')
.isEmail().isUnique(Model Name);
有什么建议吗?
答案 0 :(得分:4)
express-validator 可以检查和清理您的输入数据,但无法判断您的数据库中是否已有电子邮件。
我认为最佳方法是在 mongoose 架构中设置unique
并在电子邮件已存在时处理错误。
let User = new Schema({
firstname: String,
lastname: String,
email: {
type: String,
required: true,
unique: true, // ensure unique email
validate: [ isEmail, "Email should have a valid syntax e.g: example@example.com" ]
},
// ...
})