如何检查用户是否已经在express-validator中使用customValidators存在? [英] How to check is user already exist with customValidators in express-validator?
本文介绍了如何检查用户是否已经在express-validator中使用customValidators存在?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果用户已存在或自定义express-validator中不存在布尔值(真或假),我有一个问题. 到目前为止,我设法以这种方式工作:
I have a problem to return boolean (true or false) if user already exist or not in custom express-validator. So far I manage to work it in this way:
app.use(expressValidator({
customValidators: {
isUsernameAvailable: function (username) {
return User
.findOne({ 'username': username })
.then(function (user) {
if (user) {
throw new Error('User already exist')
}
}
}
}
想法是返回布尔值(对应名称:isUsernameAvailable),而不是Promise或Object,但我不知道如何.
The idea is to return boolean (corresponding the name: isUsernameAvailable) not Promise or Object, but I don't know how.
我用它来检查它:
module.exports = {
create: (req, res) => {
let user = req.body
...
req.check('username', 'This username is already taken.').isUsernameAvailable()
...
}
}
推荐答案
我花了更多时间来简化和简化代码
i taken more time to get easy and simplify code for do it
这是我用过的代码
router.post('/signup', [
check('username').notEmpty().withMessage('must be not null').
.custom((value, {req, loc, path}) => {
return Users.findOne({
where: {
username: req.body.username,
}
}).then(user => {
if (user) {
return Promise.reject('Username already in use');
}
});
})
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({errors: errors.array()});
} else {
// Do everything or create new user
}
});
这篇关于如何检查用户是否已经在express-validator中使用customValidators存在?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文