Доброе утро, у меня такая проблема, у меня есть 2 функции: функция unlockLine активирует блокировку при выходе оповещения, и запрашивает пароль, чтобы разблокировать его, блокировка и разблокировка генерируют его для меня, но когда я хочу ввести пароль, я получаю следующую ошибку: TypeError: Cannot read properties of undefined (чтение «пароль»). и я не знаю, как это исправить.
метод getAuthorizedUserPassword — это метод, который захватывает ответ от API.
const getAuthorizedUserPassword = (AuthorizedUserPassword) => {
return PackagingApi.getAuthorizedUserPassword(AuthorizedUserPassword)
.then((response) => {
Isavailablepassword = response.data.password;
return isavailablepassword;
})
.catch(handleError);
};
const unlockLinewhile = () =\> {unlockLine()} //Constant that is executed at the moment of an alert() that in turn calls another constant.
`let Isavailablepassword = null;
const getAuthorizedUserPassword = (AuthorizedUserPassword) =\> {
return PackagingApi.getAuthorizedUserPassword(AuthorizedUserPassword)
.then((response) =\> {
Isavailablepassword = response.data.password;
return isavailablepassword;
})
.catch(handleError);
console.info(isavailablepassword);
};`
const unlockLine = () => { PackagingApi.SetStationBlocked(1,lineCode) //Bloqueamos toda la linea let imputpassword = prompt("Linea Bloqueada \n Ingresa la contraseña del supervisor", ""); //Entrada de contraseña getAuthorizedUserPassword(imputpassword) .then((response) => { if (response){ PackagingApi.SetStationBlocked(0, lineCode); } else{ alert("Contraseña Incorrecta \n Ingresa la contraseña Correcta para desbloquear"); unlockLine(); } });};
Это моя функция в JS для получения
export const PackagingApi = (function (apiUrl) { apiUrl = 'http://localhost:5183'; return { getAuthorizedUserPassword : async (AuthorizedUserPassword) => HttpRequest.get(`${apiUrl}/api/Auth/${AuthorizedUserPassword}`), }; });
Это то, что API дает мне с почтальоном
{ "data": { "password": true } }
Мне нужно, чтобы при истинности он активировался в первом IF, а при ложном входе в Else Большое спасибо.
Мне нужна помощь, чтобы решить проблему, описанную со Svelte
Извините, я думал, что разместил это, но оно уже добавлено
Если PackagingApi.getAuthorizedUserPassword
выдает простой fetch
запрос, то тело ответа недоступно напрямую. Вам нужно будет сделать const data = await response.json()
, чтобы получить данные тела и проанализировать его значение JSON.
спасибо друг, я думаю, что это то, чего не хватало.
Я дам правильный ответ, который вы можете принять тогда :-)
Большое спасибо!! Ваш ответ мне очень помог, и информация, которую вы мне предоставляете, очень ценна. Здесь я опубликовал ответ о том, как в конце получился функциональный пример, но я учту его с вашим ответом, так как считаю его более правильным. Спасибо за ваше время. Код
Предполагая, что PackagingApi.getAuthorizedUserPassword
выдает простую выборку, это означает, что объект ответа не предоставляет доступ к данным тела. Вместо этого вам необходимо запросить эти данные одним из следующих способов:
text()
: для обычного текстаjson()
: для ответов в формате JSON.Посмотреть все методы в можно здесь.
Это означает, что в вашем конкретном случае единственное, что вам нужно сделать, это следующее:
PackagingApi.getAuthorizedUserPassword(AuthorizedUserPassword)
.then((response) => {
return response.json()
})
.then((data) => {
return data.password;
})
.catch(handleError);
Конечно, вы можете манипулировать промисами любым удобным для вас способом.
Имейте в виду, что если ваши возвращенные данные не являются правильно отформатированной строкой JSON, это также приведет к сбою запроса.
Трудно догадаться, не видя, как вы реализовали метод
getAuthorizedPassword()
, но я предполагаю, что вам нужноJSON.parse(response)
, чтобы получить доступ кdata
, а затемpassword