Postgres UPDATE插入值,而不是所有列

2020-02-22 javascript node.js reactjs postgresql

想象一下,一个表中有10列,而我们只想输入1个值来更新表列,并且不更改剩余值。

因此,仅我们的新值将更新,而不必要的值将不会为Null ...?

我问这是因为我正在使用此代码,并且我想发送放置请求取决于我编辑的内容...

我正在使用此查询将来自body(react)的请求放入节点postgres ...

router.put("/user/:nationalcode", (req, res) => {
  const cols = [
    req.body.nationalcode,
    req.body.stockcode,
    req.body.firstname,
    req.body.lastname,
    req.body.isenable,
    req.body.isonline,
    req.body.detail,
    req.body.birthdate,
    req.body.archive,
    req.body.offlineusername
  ];

  db.query(
    `UPDATE users SET nationalcode=$1, stockcode=$2, firstname=$3, lastname=$4, isenable=$5, isonline=$6, detail=$7, birthdate=$8, archive=$9, offlineusername = $10 WHERE nationalcode = ${req.params.nationalcode}`,
    cols,
    function(err, result) {
      if (err) {
        console.log("Error. Updating : %s ", err);
      }
    }
  );
  console.log(req.body);
});

Answers

您想从req.body对象中删除空值,请在构建cols数组之前使用此函数将其删除:

function strip(obj) {
    for (var prop in obj) {
        if (obj[prop] === null || obj[prop] === undefined) {
            delete obj[prop];
        }
    }
}

因此,定义函数并将其用作代码的第一行:

var cols = Object.values(strip(req.body));

Related