【发布时间】:2019-09-07 22:58:52
【问题描述】:
在我的路由器中我有
router.post('/user/register', User.validateRegister, User.register);
验证注册函数添加了 .lowercase() 和 trim() 但是当数据进入数据库时它不是小写的?
static validateRegister = async (req: Request, res: Response, next: NextFunction) => {
const schema = Joi.object().keys({
email: Joi.string().lowercase().trim().email({ minDomainSegments: 2 }),
fullName: Joi.string().trim().max(30),
password: Joi.string().trim().min(5),
});
const email = req.body.email;
const password = req.body.password;
const fullName = req.body.fullName;
Joi.validate({ email, password, fullName }, schema, (err) => {
if (!err) next(); else res.json(err.details);
});
};
下面是注册函数
static register = async (req: Request, res: Response) => {
const email = req.body.email;
const password = req.body.password;
const fullName = req.body.fullName;
const alreadyRegistered = await userModel.findOne({email}).exec();
if (!alreadyRegistered) {
const hashedPassword = await bcrypt.hash(password, 10);
if (!hashedPassword) {
res.status(500).send({ message: 'Failed to encrypt your password' });
} else {
const user = new userModel({email, password: hashedPassword, fullName} as UserModelInterface);
const saved = await user.save();
if (!saved) {
res.status(500).send({ message: 'Failed to register you' });
} else {
res.status(200).send({ message: 'You are now registered' });
}
}
} else {
res.status(400).send({ message: 'You have already registered' });
}
};
我的问题是为什么 Joi 没有将电子邮件转换为小写?
【问题讨论】: