Javascript使用回调中的值构建一个数组

问题描述 投票:0回答:1

[我正在为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())
javascript node.js asynchronous async-await callback
1个回答
0
投票

一个简单的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) 
})
© www.soinside.com 2019 - 2024. All rights reserved.