#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
Спасибо.