为什么 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');
}
});
换句话说:如果密码不正确,我们仍然需要响应客户端。如果出现某种数据库错误(或者用户不存在等),我们仍然需要响应客户端。你如何回应当然取决于你,但这是你需要考虑的结构。
我正在使用 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');
}
});
换句话说:如果密码不正确,我们仍然需要响应客户端。如果出现某种数据库错误(或者用户不存在等),我们仍然需要响应客户端。你如何回应当然取决于你,但这是你需要考虑的结构。