ПРИМЕЧАНИЕ: я использую node.js, express. js, Postgres и библиотеку pg-обещания.
ЧТО Я ХОЧУ
Я хочу, чтобы функция createUser создала нового пользователя с хешированным паролем, сгенерировала токен и вошла в систему. Я хочу видеть токен, сгенерированный в Почтальоне, чтобы я знал, работает ли код нормально.
ЧТО Я В настоящее время ВИДЮ
Я вижу пустой массив {}, когда я тестировал свой код в Postman. При тестировании пользователь создается в базе данных Postgres, как и ожидалось, но ответ в почтальоне показывает {}. Однако я хотел, чтобы в ответе отображалось сообщение об успешном завершении и сгенерированный токен. Я не знаю, если проблема в том, что функция не генерирует токен. Найдите мой код ниже:
ФУНКЦИЯ МОЙ ТЕКУЩИЙ СОЗДАТЕЛЬ
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 createuserquery = `insert into user_table(username, email, email_verified, password, role, created_at, last_login)
VALUES ($1, $2, $3, $4, $5, now(), now()) returning *`;
const createuservalues = [req.body.username, req.body.email, req.body.email_verified, hashedPassword, req.body.role];
try {
const result = await db.one(createuserquery, createuservalues);
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(
{ username: result.rows[0].username }, process.env.JWT_SECRET, { expiresIn: '7d' }
);
ИЛИ Возвращаемая часть res ниже:
return res
.status(200)
.cookie('jwt', token, {
httpOnly: true
})
.json({
success: true,
data: data,
message: 'One user created'
});
} catch (err) {
return res.json(err);
}
ИЗМЕНЕНИЯ ПРЕДЛОЖЕНЫ Я внес изменение, предложенное @TitusSutioFanpula, но в результате по-прежнему отображается пустой массив {} в почтальоне
return res
.status(200)
.cookie('jwt', token, {
httpOnly: true
})
.json({
success: true,
data: { token },
message: 'One user created'
});
} catch (err) {
return res.json(err);
}