在Node API中调用Postgres db函数

时间:2017-04-07 19:44:24

标签: node.js postgresql express pg-promise

我试图在我的queries.js中调用这个Postgres函数core.get_age(bigint)

function getAge(req, res, next){
  var customer_id= parseInt(req.params.customer_id);
  db.one('SELECT * FROM core.get_age($1)', customer_id)
    .then(function(data){
      res.status(200)
        .json({
          status: 'success',
          data : data,
          message: "Retrieved Age"
        });
    })
}

index.js中的任何路线

router.get('/api/age/:customer_id', db.getAge);

当我在POSTMAN中呼叫http://localhost:8080/api/age/10时,我收到404错误。

有什么问题?这是我试图调用Postgres函数的第一个实例()。只是尝试使用select * from来检索Postgres表。这个表有效,但有功能我得到这个404.

2 个答案:

答案 0 :(得分:0)

始终将.catch与承诺一起使用!它将指出问题,例如在您的情况下返回的无效行数。

function getAge(req, res, next) {
  db.func('core.get_age', +req.params.customer_id)
    .then(data => {
      res.status(200)
        .json({
          status: 'success',
          data : data,
          message: "Retrieved Age"
        });
    })
    .catch(error => {
        console.log(error);
        next();
    })
}

答案 1 :(得分:-1)

啊......

db.any('SELECT * FROM core.get_age($1)', customer_id)

而不是我曾经使用的那个。 DB.ANY获胜。