'TypeError: преобразование круговой структуры в JSON' с помощью Express - PullRequest
0 голосов
/ 16 июня 2020

Я использую 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.

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вам нужно запустить построитель запросов и дождаться результата перед возвратом:

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')) одновременно, что не имеет смысла.

0 голосов
/ 16 июня 2020

req.sessions.user и info могут иметь одно и то же значение, но не того же типа, который вам следует. Сначала проверьте значение вашей переменной info console.log(info), есть вероятность, что вам может потребоваться json.parse() it или json.stringify() это, если вы хотите отправить его в качестве ответа.

...