我将NodeJS和Express用于我的项目,并在用户登录到索引时保留会话值时进行设置。
请求会话用户
{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一起获取数据。
答案 0 :(得分:0)
req.sessions.user
和info
可能具有相同的值,但没有相同的类型,请首先检查变量信息console.log(info)
的值,您有可能需要json.parse()
或json.stringify()
,如果您希望将其作为响应发送。
答案 1 :(得分:0)
您需要执行查询生成器并等待结果返回:
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'))
,这没有意义。