get_customers()
函数在数据库中查询playlists
记录,并记录到控制台的每一行。但是data
数组作为空列表数组返回。如何从get_playlists函数返回数据?
...result undefined
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('mydb.db', (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the database.');
});
function get_playlists(db){
let sql = `SELECT DISTINCT Name name FROM playlists
ORDER BY name`;
let data = []
db.all(sql, [], (err, rows) => {
if (err) {
throw err;
}
rows.forEach((row) => {
console.log(row.name);
data.push(row.name);
});
return data
});
}
result = get_playlists(db)
console.log('...result', result);
db.close();
答案 0 :(得分:0)
在get_playlists
中包装Promise
函数的内容,并以rows
进行解析:
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('mydb.db', (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the database.');
});
function get_playlists(db) {
return new Promise( (resolve, reject) => {
let sql = `SELECT DISTINCT Name name FROM playlists ORDER BY name`;
db.all(sql, [], (err, rows) => {
if (err) { throw err; }
resolve(rows);
});
})
}
let rows ;
get_playlists(db).then( res => {
rows = res;
rows.forEach( (row) => { console.log('row:', row) } );
});
db.close();