我是节点js的新手,我需要将第一个查询的结果作为另一个函数中的参数。 这是我的模型:
return new Promise((resolve, reject) => {
var sql = "SELECT * FROM table";
db.query(sql,
(err, result) => {
if (err) {
return reject(err)
}
return resolve(result)
});
});
我需要这样的东西
return new Promise((resolve, reject) => {
var sql = "SELECT * FROM table";
db.query(sql)
.then(rows.map(row =>{
return arr[row.id] = this.getProduct(row.id);
}))
})
使用 Async/Await。
您可以创建一个generic
queryDb 函数,该函数将调用 db 并获取任何查询的结果。mainFunction
将等待await
完成并获取结果,您可以在其下方的行中使用。
代码看起来也很干净,易于理解。 像这样的东西,
async function mainFunction(){
try{
const query = `INSERT INTO aaa xxxxxx`;
const result = await queryDb(query);
//do whatever with the result;
this.getProduct(result);
}
catch(e){
//catch error
}
}
function queryDb(sql){
return new Promise( ( resolve, reject ) => {
db.query(sql,
(err, result) => {
if (err) {
return reject(err)
}
return resolve(result)
});
})
}