如何在程序化之前确保我对postgres的承诺得到解决?

时间:2018-02-25 20:12:50

标签: javascript node.js express asynchronous pg-node

我正在制作一个Node-js应用程序,它需要在继续进行另一个db-call之前从数据库中查找一些信息,但我似乎无法确保在继续之前解决了第一个检查。在继续之前,如何确保始终满足第一个查询?我已经尝试过嵌套。下一步,但它们似乎都在跳过。所以在第一次DB调用之后我想检查返回的值,但它总是未定义的。

我的异步功能:

async function GetStuff(text, id){
  try {
    return await db.query(text, id);
   } catch(error) {
      console.log('fel inne: ' + error)
      logger.error('Fel: ' + error)
    return null;
  }
}

我的控制器代码,我调用该方法,然后尝试使用.next等待调用。

router.post('/newStuff', async (req, res) => {

//Check if number exist in DB
const checkUserText = 'select * from public.User WHERE Mobilenumber = $1 limit 1';
const values = [req.body.from];

GetStuff(checkUserText, values)
.then(function(result) {
    var user = result.rows[0];

    //HERE I GET UNDEFINED for some reason. I need to check the result in order to select the next step.
    if(user.userid !== null){
        console.log(user)

    //do some stuff...

  }
  else {
    res.end('Not OK')
  }
}).catch(function(error) {
    console.log('fel: ' + error)
    logger.error('Fel: ' + error)
    res.end('Error')
});

})

0 个答案:

没有答案