Как я могу решить эту ошибку при выполнении выборки с помощью svelte?

Доброе утро, у меня такая проблема, у меня есть 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

Трудно догадаться, не видя, как вы реализовали метод getAuthorizedPassword(), но я предполагаю, что вам нужно JSON.parse(response), чтобы получить доступ к data, а затем password

Sebastian Kaczmarek 13.02.2023 15:22

Извините, я думал, что разместил это, но оно уже добавлено

Rogelio Arriaga 13.02.2023 15:33

Если PackagingApi.getAuthorizedUserPassword выдает простой fetch запрос, то тело ответа недоступно напрямую. Вам нужно будет сделать const data = await response.json(), чтобы получить данные тела и проанализировать его значение JSON.

carlosV2 13.02.2023 15:40

спасибо друг, я думаю, что это то, чего не хватало.

Rogelio Arriaga 13.02.2023 16:02

Я дам правильный ответ, который вы можете принять тогда :-)

carlosV2 13.02.2023 16:36

Большое спасибо!! Ваш ответ мне очень помог, и информация, которую вы мне предоставляете, очень ценна. Здесь я опубликовал ответ о том, как в конце получился функциональный пример, но я учту его с вашим ответом, так как считаю его более правильным. Спасибо за ваше время. Код

Rogelio Arriaga 13.02.2023 18:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что PackagingApi.getAuthorizedUserPassword выдает простую выборку, это означает, что объект ответа не предоставляет доступ к данным тела. Вместо этого вам необходимо запросить эти данные одним из следующих способов:

  • text(): для обычного текста
  • json(): для ответов в формате JSON.
  • и т. д.

Посмотреть все методы в можно здесь.

Это означает, что в вашем конкретном случае единственное, что вам нужно сделать, это следующее:

PackagingApi.getAuthorizedUserPassword(AuthorizedUserPassword)
  .then((response) => {
    return response.json()
  })
  .then((data) => {
    return data.password;
  })
  .catch(handleError);

Конечно, вы можете манипулировать промисами любым удобным для вас способом.

Имейте в виду, что если ваши возвращенные данные не являются правильно отформатированной строкой JSON, это также приведет к сбою запроса.

Другие вопросы по теме