Node JS承诺结果将在其他函数中使用

时间:2018-08-22 12:16:04

标签: javascript node.js promise

我是节点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);
    }))
})

1 个答案:

答案 0 :(得分:0)

使用异步/等待。

您可以创建一个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)
    });
  })
}