如何访问数据库中的数据并将其作为数组返回?

时间:2018-11-11 14:24:39

标签: javascript arrays foreach sqlite

我是 JavaScript 的新手,我必须解决我的家庭作业任务。 我必须在一类中从数据库中获取特定数据(专辑标题和专辑ID),然后将此数据返回到另一类并在那里使用模板文字对其进行格式化。

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时,titles数组已正确填充。但是它没有将此数组返回给另一个类,我得到一个错误:

  

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 :(得分:0)

尝试将您的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`);
});
}