Получение неопределенной ошибки в javascript (React Native)

#javascript #react-native #undefined

#javascript #react-native #не определено

Вопрос:

Я сохраняю определенное значение ключа в базе данных. Но при извлечении значения ключа возникает неопределенная ошибка.

 await DbHandler.fetch(codeStatus)
  .then((result) => {
    const codeEnabledObj = result[0];
    console.log('codeEnabledObj', codeEnabledObj);
    let codeEnabled = false;
    if (codeEnabledObj amp;amp; codeEnabledObj.length > 0) { // this code not executing at all.
      codeEnabled = codeEnabledObj[0].isEnabled;
    }
    console.log('codeEnabled', codeEnabled); // getting false always
    console.log('codeEnabledObj.length[0]', codeEnabledObj.length); // undefined

  })
  .catch((error) => {

  });
 

Проблема в том, что она не входит в условие if и выдает ошибку типа undefined.

Но, если мы напечатаем ответ из выборки БД

 'codeEnabledObj', { type: 'codeStatus', isEnabled: true } // This is my response
 

Есть предложения?

Комментарии:

1. где этот код входа в систему? 'codeEnabledObj.length[0]', undefined

2. во-первых, что такое codeEnabledObj.length[0] ? Я думаю, это опечатка. и вы уверены, что ваш ответ является массивом? codeEnabledObj выглядит как объект из вашего ответа.

3. Пожалуйста, проверьте обновленный запрос.

4. Ваш ответ не является массивом? почему вы проверяете длину?

5. даже по словарю мы можем проверить длину, верно? не можем ли мы?

Ответ №1:

Объекты не имеют свойства длины, такого как массив.

codeEnabledObj.length неверно

используйте это,

  Object.keys(codeEnabledObj).length 
 

Редактировать :

codeEnabledObj[0].isEnabled должно быть только codeEnabledObj.isEnabled

Комментарии:

1. Но, если бы я попытался получить значения codeEnabledObj, я все равно не смог получить.

Ответ №2:

В свойстве length нет codeEnabledObj , более того, это не массив .. поэтому изменение условия будет работать, где isEmpty может быть функцией, используемой из пакета узла как underscore

 if (isEmpty(codeEnabledObj)) { // ... } 
 

и

 codeEnabledObj.isEnabled
 

Спасибо.