javascript - 仅当它是电子邮件时才使用 express-validator 清理电子邮件,否则忽略

标签 javascript node.js express express-validator

我正在制作一个 API,其中我将用户名和密码作为 req.body,以便我可以对用户进行身份验证。
(简而言之登录功能)
用户可以输入电子邮件或用户名或手机号码。在后端,如果是电子邮件,我想规范化用户名。我这样做是因为我在注册时正在标准化电子邮件,因此我需要用标准化电子邮件检查它。

想要做这样的事情:(一个简短的伪代码)

username <- take input from request  
check if username is email:   
  if yes then *sanitize* username

我现在的登录 Rest API:

// Login user
router.post(
  "/login",
  [
    check("username").not().isEmpty().escape(),
    check("password").not().isEmpty().escape(),
  ],
  (req, res, next) => {
    // Finds validation errors and return error object
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }
    let { username, password } = req.body;
    // Do authentication part
  }
);

如果输入的是用户名,上面的代码可以正常工作,但我还想规范化电子邮件。

数据库内容是这样的

user : [
  {
    username: 'SOME_MOBILE',
    password: 'SLDUS##$##KDJ'
  },
  {
    username: 'SOME_EMAIL',
    password: 'SLDU$%%##$2342423DJ'
  },
  {
    username: 'my_username',
    password: 'SLDUS##$#fssKDJ'
  }
]

请帮忙!
谢谢

最佳答案

如果您希望您的用户名 是这样的电子邮件支票:

[body("username").notEmpty().escape().if(body("username").isEmail()).nomalizeEmail(), 
body("password").notEmpty().escape()]

关于javascript - 仅当它是电子邮件时才使用 express-validator 清理电子邮件,否则忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63800276/

相关文章:

javascript - 带有多个 Slick 旋转木马的 appendDots

javascript - 为什么在使用文字字符串和局部变量时我的结果不同

javascript - NodeJS 两个 "Require"参数

node.js - .then() 函数在主函数完成之前被调用 - Q.nfcall

node.js - app.post的第一个字符串参数有什么作用?

node.js - 获取请求查询参数数量

javascript - 字母 'z' 后字母的项目符号列表

javascript - 为什么在浏览器上调用 API 没有返回回调

node.js - 在 Nodejs 中使用 jimp 包裁剪 base64 格式图像时出错

node.js - OpenShift 问题中的 ExpressJS 4