Подведите итог проблемы
Я пытаюсь изменить некоторые поля объекта JSON, но результат, который я получаю, когда console.log или res.send не соответствует ожидаемому
ЧтоЯ уже пробовал
- Обещания с тогдашним
- Обещания с асинхронностью / ожиданием
- Пытался изменить поля с помощью:
user2 = {
...user,
newFiels : 'newfiled',
}
Попытка изменить объект с помощью Object.assign (...) Отладка в VS Code:
, которая фактически показывает ожидаемый результат (только в отладчике), но не когда я утешаю.log ... Показать некоторый код
Я использую Sequelize, а поле " role " не находится прямо на столе " Пользователи ».Поэтому я использую и включаю (который выполняет JOIN), чтобы получить роль:
- Найти пользователя
- Определить, является ли он техником или нет
- Согласно 2) добавьте роль в качестве нового поля
- Поместите пользователя (который теперь имеет правильный синтаксис) в поле response.userInfo
- Отправьте данные обратно
// in login function
let response = {
status: "NotOK",
userInfo: {
username: null,
nom: null,
prenom: null,
role: null,
},
infoMsg: null,
error: false,
errorMsg: null,
}
const usernameInput = req.query.username;
const passwordInput = req.query.password;
// 1)
Utilisateurs.findOne({
attributes: ['username', 'nom', 'prenom'],
include: [
{ model: Techniciens },
{ model: Magasiniers },
],
where: {
[Op.and]: [
{ username: usernameInput },
{ password: passwordInput },
],
}
})
.then(user => {
if (user) {
// 2) and 3)
if (user.technicien != null) {
user.role = 'technicien';
} else {
user.role = 'magasinier';
}
// 4)
response.userInfo = user;
response.status = 'OK'
response.infoMsg = "User found !"
console.log(`response : ${JSON.stringify(response)}`);
// 5)
res.send(response);
return;
} else {
// ...
}
})
.catch(error => {
// ...
});
Кажется, все работает, кроме 4) , и я не знаю, почему
Опишите ожидаемые и фактические результаты
Ожидаемыерезультаты
Я выполняю бэкэнд для проекта, и меня попросили указать объект этого формата (см. Ответ ):
Description: authenticate the user
Body content :
{
"username" : "theUsername",
"password" : "thePassword"
}
Response :
{
"status" : "OK/NotOK",
"userInfo" : {
"username" : "theUsername",
"nom" : "theName",
"prenom" : "theLastName",
"role" : "magasinier/technicien"
},
"infoMsg": "infomsg",
"error": true/false,
"errorMsg": "errmsg"
}
Фактические результаты
{
"status":"OK",
"userInfo":{
"username":"davalres",
"nom":"Alvarez",
"prenom":"David",
"technicien":null,
"magasinier":{
"username":"davalres"
}
},
"infoMsg":"User found !",
"error":false,
"errorMsg":null
}
То, что я вижу в отладчике до " Фактические результаты "
Как видите, все поля, которые я хочу, здесь.Может быть, я запутался, и у меня не должно быть таких полей, как __eagerlyLoadedAssociations
, ...