我是 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`);
});
}
如何正确传输阵列?
答案 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`);
});
}