[我正在为Messenger应用(使用express)创建一个nodejs api,我正在使用sqlite3作为数据库软件。
编辑:我被此功能所困扰,如何使它起作用?
const sqlite3 = require('sqlite3');
function recentConvos(){
let result = []
uid = 58;
db.all('SELECT DISTINCT U.id, U.name FROM users U, messages M WHERE (M.sender='+uid+' OR M.dest='+uid+') AND (U.id = M.sender OR U.id = M.dest) AND (U.id != '+uid+') ORDER BY M.id DESC',(err,rows)=>{
result.push(rows)
});
return result;
}
let db = new sqlite3.Database('./database.db', (err)=>{
if(err){
console.log('ERROR DATABASE')
}
else{console.log('CONNECTED TO DATABASE')}
})
console.log(recentConvos())
一个简单的for循环应该可以解决问题。您可以在嵌套查询中使用rows[i].some_field
,如下所示:
app.get('/o', (req, res) => {
db.all('sql query here', (err, rows) => {
let result = []
for (i = 0; i < rows.length; i++) {
db.all('another query ... WHERE something = ?', [rows[i].some_field], (err, rows2) => {
result.push(rows2.field)
})
}
})
res.send(result)
})