javascript - Postgres 更新插入的值而不是所有列

标签 javascript node.js reactjs postgresql

假设我们的表中有 10 列,我们希望仅输入 1 个值来更新表列,并且不更改剩余值。

所以只有我们的新值会更新,不必要的值不会为 Null ...?

我问这个是因为我正在使用 This code我想根据我编辑的内容发送放置请求...

我正在使用此查询将来自 body(react) 的请求放入 Node 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);
});

最佳答案

您想从 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));

关于javascript - Postgres 更新插入的值而不是所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60348514/

相关文章:

javascript - 如何创建一个元素而不仅仅是将其放置在页面上

javascript - Angular2 Pipe 用于更改特定字符的内联样式

javascript - 将几个模块拆分成各自的js文件

javascript - 需要幻灯片自动运行

jquery - 在 Node.js 中实现 AJAX 请求服务器端的正确方法

node.js - 找不到模块 'now' - nowjs 和 nodejs

javascript - jQuery DataTables 日期范围样式

javascript - Protractor 截图测试错误代码105

javascript - ReactJS(初学者)使用 Youtube API - 返回的对象不允许我访问 VideoId 属性

javascript - 使用 Typescript 将上下文传递到 React SFC