Массив функции Dexie StartWithIgnoreCase() не определен

Я запрашиваю базу данных dexie с помощью startWithIgnoreCase и помещаю результат в массив, но при его печати или использовании он выдает ошибку как undefined

Я попытался использовать JSON.stringify, toString, String, чтобы преобразовать его в строку и распечатать на консоли, но все же он показывает undefined

Пока вы печатаете весь массив на консоль, показывая обычный Array()

arr = [];
db.table('friends').where('name').startsWithIgnoreCase('DoB/')
                    .each(function (friend) {
                        arr.push(String(friend.name));
                    });
console.log(arr[0]); //undefined 
console.log(arr); //Array() with correct element inside

Я должен хоть что-нибудь напечатать, когда использую console.log(arr[0])

1 ответ

Решение

Вызов данных из базы данных - это что-то асинхронное, и javascript не ждет вас, пока ваша задача не будет выполнена, если вы этого не сказали. используйте async/await в своем запросе. что-то вроде этого:

async myControllerFunction()=>{
    arr = [];
    let firends = await db.table('friends').where('name').startsWithIgnoreCase('DoB/')
        .each(function (friend) {
            arr.push(String(friend.name));
        });
    console.log(arr[0]);
    console.log(arr);
}
Другие вопросы по тегам