Как получить доступ к данным из базы данных и вернуть их в виде массива? - PullRequest
0 голосов
/ 11 ноября 2018

Я новичок в Javascript , и мне нужно решить задачу для моей домашней работы. Мне нужно получить конкретные данные (названия альбомов и идентификаторы альбомов) из базы данных в одном классе, вернуть эти данные в другой класс и отформатировать их там с использованием литералов шаблона.

getAlbums: function (db) {
    sql = `SELECT DISTINCT Title, AlbumId FROM albums`;
    let title = [], id = [];
    db.all(sql, [], (err, rows) => {
        if (err) throw err;
        rows.forEach((row)=>{
            title.push(row.Title);
            id.push(row.AlbumId);
        });
    });
    return [title, id];
}

это функция, где я получаю данные из базы данных. Когда я помещаю console.log(title) внутри функции db.all, массив заголовков заполняется правильно. Но он не возвращает этот массив другому классу, я получаю сообщение об ошибке:

TypeError: Невозможно прочитать свойство 'forEach' из неопределенного.

Если я поставлю console.log(title) вне функции db.all, она вернет пустой массив, и я не получу сообщение об ошибке. Выход просто undefined.

вызов метода в моем другом классе:

showAlbum: function (db) {
    let albumID = model.getAlbums(db);
    //let album = "";
    //let albId = "";

    albumID.forEach((element) => {
        //album = element.title;
        //albId = element.id;
        console.log(`Albumtitle: ${element.title} AlbumID: ${element.id}\n`);
    });
}

Как правильно перенести массивы?

1 Ответ

0 голосов
/ 11 ноября 2018

Попробуйте изменить код JS следующим образом.

getAlbums: function (data) {
sql = `SELECT DISTINCT Title, AlbumId FROM albums`;
let title = [], id = [];
data.data.all(sql, [], (err, rows) => {
    if (err) throw err;
    rows.forEach((row)=>{
        title.push(row.Title);
        id.push(row.AlbumId);
    });
});
return [title, id];
}

затем

showAlbum: function (data) {
let albumID = model.getAlbums(data.data);
//let album = "";
//let albId = "";

albumID.forEach((element) => {
    //album = element.title;
    //albId = element.id;
    console.log(`Albumtitle: ${element.title} AlbumID: ${element.id}\n`);
});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...