如何使用node / express更新mysql表中的特定列?

时间:2019-06-27 13:19:20

标签: javascript mysql node.js express sql-update

我正在尝试重用路由来更新mysql表中的列。我能够将正确的对象从客户端传递到服务器端,并更新表,问题是所有字段都在更新,而不是对象中的特定字段。如果没有字段,则将这些字段更新为“未定义”。

在客户端,这是通过$ .ajax PUT传递到服务器端的三个对象。

routePUT.js
// Object 1 //
    object = {
        element1,
        elementAttr1
    }

    // Object 2 //
    object = {
        element2,
        elementAttr2
    }

    // Object 3 //
    object = {
        element3,
        elementAttr3
    }

这是我控制器内的路由代码。我正在为MySQL使用orm结构。用于更新表的代码位于此代码下方,但我觉得问题出在controller.js

controller.js
app.put("/api/thisTable/:id", function (req, res) {
            table = "thisTable";
            condition = "id = " + req.params.id;
            objColVals = {
                element1: req.body.element1,
                elementAttr1: req.body.elementAttr1,

                element2: req.body.element2,
                elementAttr2: req.body.elementAttr2,

                element3: req.body.element3,
                elementAttr3: req.body.elementAttr3,
            }
        });
orm.js

function objToSql(ob) {
  // column1=value, column2=value2,...
  var arr = [];

  for (var key in ob) {
    arr.push(key + "=" + ob[key]);
  }

  return arr.toString();
}

update: function(table, objColVals, condition, cb) {
    var queryString = "UPDATE " + table;

    queryString += " SET ";
    queryString += objToSql(objColVals);
    queryString += " WHERE ";
    queryString += condition;

    console.log(queryString);
    connection.query(queryString, function(err, result) {
      if (err) {
        throw err;
      }

      cb(result);
    });
  },

如前所述,当我更新前端的特定对象时,我只希望它更新表中的相关列,而不更新表中的所有列。

0 个答案:

没有答案