0

私は postgresql で高速生成されたテンプレートを使用しており、委託品の作成と追跡のための 2 つの残りのルート メソッドがあります。ただし、貨物の挿入ごとに追跡を更新したいのですが、そのためにはシリアルの主キーが必要です。したがって、createCon 関数から、挿入後に ID を返し、createConTracking の cid フィールドに使用する必要があります。

routes/index.js ファイル

var db = require('../queries');
router.post('/api/cons', db.createCon);
router.post('/api/cons/:id/tracking', db.createConTracking);

クエリ.js

var promise = require('bluebird');
var options = {
  promiseLib: promise
};
var pgp = require('pg-promise')(options);
var db = pgp(connectionString);
function createCon(req, res, next) {
  var conid = parseInt(req.body.conid);
  db.none('insert into consignments(conid, payterm,........)'+
    'values($1, $2, ......)',
    [conid, req.body.payterm,........])
    .then(function () {
      res.status(200)
        .json({
          status: 'success',
          message: 'Inserted one con'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}

function createConTracking(req, res, next) {
  var cid = parseInt(req.params.id);
  var userid = req.user.email;
  var conid = parseInt(req.body.conid);
  db.none('insert into tracking(status, remarks, depot, userid, date, cid, conid)'+
    'values($1, $2, $3, $4,$5, $6, $7)',
    [req.body.status, req.body.remarks, req.body.depot, userid, req.body.date, cid, conid])
    .then(function (data) {
      res.status(200)
        .json({
          data:   data,
          status: 'success',
          message: 'Updated Tracking'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}

DB

CREATE TABLE consignments (
  ID SERIAL PRIMARY KEY,
  conId INTEGER,
  payTerm VARCHAR,

CREATE TABLE tracking (
  ID SERIAL PRIMARY KEY,
  status VARCHAR,
  remarks VARCHAR,
  cid INTEGER
  );
4

2 に答える 2