为什么 localhost 不响应渲染?

Why isn't localhost responding to render?

我正在使用 Knex JS 进行用户身份验证,以便从用户那里获取电子邮件和密码并连接到 PostgreSQL 以检查身份验证。

router.post('/login', async (req, res) => {
  knex.select('email','password').from('users')
    .where('email', '=',req.body.email)
    .then((data) => {
      const isValid = bcrypt.compareSync(req.body.password, data[0].password);
      if (isValid === true) {
        res.render('index-v1');
      }
    });
});

但是渲染函数没有渲染索引 ejs 文件,而是本地主机没有响应。 在此先感谢您的帮助。

因此,正如评论所暗示的那样,有两条可能的路径未包含在您的路线中,这显然导致服务器没有响应。请记住,如果你不告诉它响应(使用 res.render 或类似的)它不会响应,让你的客户挂起。

router.post('/login', async (req, res) => {
  try {
    const data = await knex.select('email', 'password')
      .from('users')
      .where('email', '=', req.body.email)
    const isValid = bcrypt.compareSync(req.body.password, data[0].password);
    if (isValid) {
      res.render('index-v1');
      return
    }

    res.render('error-page');
  } catch (e) {
    res.render('error-page');
  }
});

换句话说:如果密码不正确,我们仍然需要响应客户端。如果出现某种数据库错误(或者用户不存在等),我们仍然需要响应客户端。你如何回应当然取决于你,但这是你需要考虑的结构。