Как аутентифицировать нового пользователя с токеном JWT в node.js, Express. js и Postgres - PullRequest
0 голосов
/ 28 января 2020

Пожалуйста, я вижу пустой массив {} при тестировании своего кода в Postman. Я использую node.js, express. js и pg-обещание, чтобы создать нового пользователя в моем коде. При тестировании пользователь создается в базе данных Postgres, как и ожидалось, но ответ показывает {}. Однако я хотел, чтобы в ответе отображалось сообщение об успешном завершении и сгенерированный токен. Я не знаю, если проблема в коде, не генерирующем токен. Найдите мой код ниже:

ФУНКЦИЯ CREATEUSER

async createUser(req, res) {
    if (!req.body.username || !req.body.email || !req.body.password) {
      return res.status(400).send({'message': 'Some values are missing'});
    }
    const hashedPassword = await bcrypt.hash(req.body.password, 10);
    const query = `insert into user_table(username, email, email_verified, password, role, created_at, last_login)
                  VALUES ($1, $2, $3, $4, $5, now(), now()) returning *`;
  const values = [req.body.username, req.body.email, req.body.email_verified, hashedPassword, req.body.role];

  try {
    const { result } = await db.one(query, values);
    const token = jwt.sign(
      { username: result.rows[0].username }, process.env.JWT_SECRET, { expiresIn: '7d' }
    );
  return res
    .status(200) 
    .cookie('jwt', token, {
      httpOnly: true
    })
    .json({
      success: true,
      data: data,
      message: 'One user created'
    });
} catch (err) {
    return res.json(err);
  }
},

Что-то не так с методом, который я использую для генерации токена ниже?

const token = jwt.sign(
      // the first parameter is an object which will become the payload of the token
      { username: result.rows[0].username }, process.env.JWT_SECRET, { expiresIn: '7d' }
    );

ИЛИ Что-то не так с той частью, где у меня есть ответ, как показано ниже?

return res
    .status(200) 
    .cookie('jwt', token, {
      httpOnly: true
    })
    .json({
      success: true,
      data: data,
      message: 'One user created'
    });
} catch (err) {
    return res.json(err);
  }
...