使用Express的“ TypeError:将圆形结构转换为JSON”

时间:2020-06-16 10:00:23

标签: javascript json express knex.js

我将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一起获取数据。

2 个答案:

答案 0 :(得分:0)

req.sessions.userinfo可能具有相同的值,但没有相同的类型,请首先检查变量信息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.jsonres.sendFile(path.join(__dirname + '/../public/personal_information.html')),这没有意义。