首页 > 解决方案 > 在查询结果后传递参数(ExpressJS)

问题描述

我正在使用 expressjs 和 postgresql

如何在expressJS外部函数中查询结果后获取参数

这是我的代码


const checkMail = function(regEmail){

      pool.query("SELECT * FROM tb_users where email=$1", [regEmail] ,(err, result) =>{

        console.log('inside : '+result.rowCount);       
        return result.rowCount;
      });
    
    }
    
    var cekMailres = checkMail(email);

    console.log('outside : '+cekMailres);

我需要参数result.rowCount

谢谢你的帮助


我的最终解决方案


var email = req.body.email;

var cekMail = new Promise(function(resolve, reject) {
      pool.query("SELECT * FROM tb_users where email=$1", [email] , function(error,result) {
      console.log("Row count: %d",result.rows.length);  // n

      if(error){
          console.log(error)
      }
      
      resolve(result.rows.length);
      });  
  });

  cekMail.then(function (resolve, reject) {

    console.log(resolve);

    res.render('login/register',{

      layout: 'login/layout',
      mailStatus: resolve,
    });

  });

标签: javascriptnode.jspostgresqlexpress

解决方案


您没有从函数返回值(您在查询回调中)。我没有对此进行测试,但它应该像这样工作:

const checkMail = async function(regEmail, fn){
  var rowCount = 0;
  await pool.query("SELECT * FROM tb_users where email=$1", [regEmail] ,(err, result) =>{

    console.log('inside : '+result.rowCount);
    fn(result.rowCount);       
    return result.rowCount;
  });

}

var cekMailres = checkMail(email, function(rowCount){
    console.log('Outside: ' + rowCount);
}).then(function () {
    //do nothing
}).catch(function () {
    //do nothing
});

推荐阅读