为什么我的中间件没有检查电子邮件是否已经存在?

时间:2017-06-01 16:24:43

标签: node.js express ecmascript-6 ejs

我正在使用passportJS验证人员。我最近意识到的问题是用户可以注册多个帐户。我已经创建了一个中间件来检查电子邮件是否已经在使用,但不知何故它仍在通过测试。

router.post('/register',authMethods.isInUse ,multipart(),function(req, res) {
  var image = fs.readFileSync(req.files.image.path);
  var profilePic = {data : image, contentType : 'image/png'};
  var user = new User({
      username: req.body.username,
      email: req.body.email,
      password: req.body.password,
      occupation: req.body.occupation,
      phone: req.body.phone,
      profilePic : profilePic,
      firstName : req.body.firstName,
      lastName : req.body.lastName
    });

  user.save(function(err) {
    req.logIn(user, function(err) {
      req.flash("success", "Welcome to the site " + user.username);
      res.redirect('/flats');
    });
  });
});

在我的身份验证页面中,我调用路由中的中间件来满足条件。

return new Pair<>(yourList, yourCommaSeparatedValues);

我无法发现导致问题的错误方法。

1 个答案:

答案 0 :(得分:2)

如果multipart()执行我认为的操作(将请求数据解析为req.body),那么req.body可能不会填充在您的中间件中,因为它被调用之前多部分中间件。

尝试切换中间件功能:

router.post('/register', multipart(), authMethods.isInUse, function(req, res) {
  ...
});