如何使用节点JS调用PostgreSQL函数?

时间:2017-05-02 07:14:52

标签: node.js postgresql web-services

我是PostgreSQL和节点JS的新手。我正在使用节点js创建Web服务。我在PostgreSQL中创建了函数并成功执行。现在我想要的是我通过节点JS调用此函数但我没有得到如何在参数中发送值。我想插入两个值" task_name"和" task_type"在表中通过节点JS。我怎样才能做到这一点?

PostgreSQL功能 -

CREATE FUNCTION inserttask(task_name text, task_type text)
  RETURNS void AS
  $BODY$
      BEGIN
        INSERT INTO tasklist(taskname, tasktype)
        VALUES(task_name, task_type);
      END;
  $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;

节点js代码 -

app.param(['task_name', 'task_type'], function (req, res, next, value) {
  console.log('CALLED ONLY ONCE with', value);
  next();
});

app.get('/inserttask/:task_name/:task_type', function (req, res, next) {
    console.log('vivek');
// var task_name=req.query.task_name;
// var task_type=req.query.task_type;
var task_name='vivek';
var tast_type='singh';
db.any('select inserttask(task_name,task_type)')
//db.any('select getFriends()')
    .then(function (data) {
      res.status(200)
        .json({
          status: 'success',
          message: 'Insert Task',
          data: data
        });
    })
    .catch(function (err) {
      return next(err);
    });

})

1 个答案:

答案 0 :(得分:4)

根据documents值作为数组| qry之后的值,试试:

1

pg-promise作者编辑。最好的方法是通过方法func

db.any('select inserttask($1, $2)', ['task_name','task_type'])