【问题标题】:custom validation (Existing email)自定义验证(现有电子邮件)
【发布时间】:2019-03-01 02:12:03
【问题描述】:

我想使用 express-validator 来检查邮件是否存在 这是我的代码:

router.post('/', [
  check('username', 'Min 5 chars, Max 20').isLength({ min: 5, max: 20 }),
  check('email').custom(async value => {
      const db = require('../db');
return await db.query('SELECT id FROM users WHERE email=?', [value], function (err, results, fields) {
        if (results.length > 0) {
              return false;
        } else { return true; }
      })
  }).withMessage('Email already exists'),
], function(req, res, next) {

  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }

....

async/await 的问题是验证根本没有执行,即使返回是 true 或 false。如何解决?

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    您正在使用错误的async/await 命令。老实说,这里不需要它们。

    router.post('/', [
      check('username', 'Min 5 chars, Max 20').isLength({ min: 5, max: 20 }),
      check('email').custom(value => {
          const db = require('../db');
          return new Promise((resolve, reject) => {
              db.query('SELECT id FROM users WHERE email=?', [value], function (err, results, fields) {
                 if (err)
                    reject(err)
                 if (results.length>0)
                    reject(new Error('Email Already exists'))
                 resolve()
              })
           })
    
      }),
    ], function(req, res, next) {
    
      const errors = validationResult(req);
      if (!errors.isEmpty()) {
        return res.status(422).json({ errors: errors.array() });
      }
    

    【讨论】:

    • 这行不通!在控制台中说 /home/user/test/node_modules/mysql/lib/protocol/Parser.js:437 throw err; // 重新抛出非 MySQL 错误 ^ 错误:电子邮件已经存在于 Query. (/home/user/test/routes/register.js:36:16) at Query. (/home/user/test /node_modules/underscore/underscore.js:957:21) 在 Query. (/home/user/test/node_modules/mysql/lib/Connection.js:525:10) .....
    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2019-05-28
    • 2014-04-07
    • 2020-02-23
    • 2020-10-20
    • 2012-01-03
    • 2018-10-09
    相关资源
    最近更新 更多