我在项目中使用 NodeJS 和 Express,并在用户登录索引时设置它以保留会话值。
req.session.user
{ adminID: 3, 用户名: 'admin', 密码: 'admin' }
我想从MYSQL获取数据,所以我像这样使用Knex。
router.get('/profile/user/me', (req, res, next) => {
let user = req.session.user;
if(user) {
try {
let me = req.session.user.adminID;
let info = knex('admin_account').where('adminID', `%${me}%`)
res.json(info)
} catch (e) {
console.log(e);
}
res.sendFile(path.join(__dirname + '/../public/personal_information.html'));
return;
}else{
res.redirect('/');
}
});
在我看来,我认为如果我们完成登录,我们将拥有一个req.session.user我将使用它与 Knex 一起获取数据。
req.sessions.user
和info
可能具有相同的值,但不是您应该具有的相同类型,首先检查变量 info 的值console.log(info)
,如果您想将其作为响应发送,则可能需要json.parse()
或json.stringify()
它。
您需要执行查询构建器并等待结果,然后再返回:
knex('admin_account').where('adminID', me)
.then(info => {
res.json(info)
})
.catch(err => {
console.log(e);
});
而且你不需要%
通配符,除非你正在与like
运算符进行松散的字符串比较。
关于代码的另一件事是,您似乎试图同时返回res.json
和res.sendFile(path.join(__dirname + '/../public/personal_information.html'))
,这没有意义。