Я храню определенное значение ключа в базе данных. Но при получении значения ключа возникает ошибка неопределенный.
await DbHandler.fetch(codeStatus)
.then((result) => {
const codeEnabledObj = result[0];
console.info('codeEnabledObj', codeEnabledObj);
let codeEnabled = false;
if (codeEnabledObj && codeEnabledObj.length > 0) { // this code not executing at all.
codeEnabled = codeEnabledObj[0].isEnabled;
}
console.info('codeEnabled', codeEnabled); // getting false always
console.info('codeEnabledObj.length[0]', codeEnabledObj.length); // undefined
})
.catch((error) => {
});
Проблема в том, что он не входит внутрь, если условие и выдает ошибку, например undefined.
Но если мы напечатаем ответ от db fetch
'codeEnabledObj', { type: 'codeStatus', isEnabled: true } // This is my response
Какие-либо предложения?
во-первых, что за codeEnabledObj.length[0]? Думаю, это опечатка. и вы уверены, что ваш ответ является массивом? codeEnabledObj выглядит как объект из вашего ответа.
Пожалуйста, проверьте обновленный запрос.
Ваш ответ не является массивом? почему вы проверяете длину?
даже словарь также мы можем проверить длину, верно? мы не можем?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Объекты не имеют свойства длины, как массив.
codeEnabledObj.length неправильно
использовать этот,
Object.keys(codeEnabledObj).length
РЕДАКТИРОВАТЬ :
codeEnabledObj[0].isEnabled должно быть только codeEnabledObj.isEnabled
Но, если бы я попытался получить значения codeEnabledObj, я все равно не смог бы получить.
В codeEnabledObj нет длины свойства, более того, это не массив.. поэтому изменение условия будет работать, где isEmpty может быть функцией, используемой из
пакет узла как underscore
if (isEmpty(codeEnabledObj)) { // ... }
а также
codeEnabledObj.isEnabled
Спасибо.
где этот код входа?
'codeEnabledObj.length[0]', undefined