如何解决为什么本地主机不响应渲染?
我正在使用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');
}
});
});
但是render函数没有渲染ejs索引文件,但是localhost没有响应。 预先感谢您的帮助。
解决方法
因此,正如评论所建议的那样,您的路由没有覆盖两条可能的路径,这显然导致服务器缺乏响应。请记住,如果您不告诉它以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');
}
});
换句话说:如果密码不正确,我们仍然需要响应客户端。如果存在某种数据库错误(或者说用户不存在),我们仍然需要响应客户端。确切的响应方式当然取决于您,但这就是您需要考虑的结构。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。