【问题标题】:How to acces data from a database and return it as an array?如何访问数据库中的数据并将其作为数组返回?
【发布时间】:2019-04-14 10:28:04
【问题描述】:

我是 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];
}

这是我从数据库中获取数据的函数。当我在 db.all 函数中放置 console.log(title) 时,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`);
    });
}

如何正确传输数组?

【问题讨论】:

    标签: javascript arrays foreach sqlite


    【解决方案1】:

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

    【讨论】:

    • 不幸的是,我现在收到以下错误:TypeError: Cannot read property 'all' of undefined
    • 将您的db.all 更改为data.db.all 并检查它是否正常工作?
    • 无论您在何处使用 db 参数,请尝试将其更改为 data.db
    • 还是一样,但是现在是“TypeError: Cannot read property 'db' of undefined”
    • 请检查已编辑的评论并进行更新。让我知道它是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多