使用 mssql 和 node-sql 进行更新

Using mssql and node-sql to UPDATE

我正在使用 mssql together with node-sql 构建 SELECT 查询,但我找不到任何示例如何使用它来构建 UPDATE 查询。我有一个对象,其中的属性对应于 table 个字段,我想更新所有这些字段。

假设:

child: sql.define({
    name: 'children',
    columns: ['id', 'name', 'surname', 'group']
  })

和:

var data = {/*new child data*/};

var query = child.update(data).where(child.id.equals(data.id)).toQuery().text;

如何在不知道 data 属性的值和数量的情况下将其与 mssql 一起使用?

现在我有这个:

connection.query(query, [data.id, data.name, data.surname, data.group], function(err, result) {

      res.redirect('/index');
    });

这可以通过使用 lodash 的 values:

来实现
_.values(data);

对象属性的 returns 数组,但它不能保证正确的顺序,这是交易破坏者。

我该如何解决这个问题?

这将 return 一个基于 table 列顺序的值数组:

child.columns.map(function(col){return data[col.name]})

或许可以使用 lodash 以较短的形式压缩上述内容。

几天后我发现node-sql的查询对象除了.text 属性之外还有.values 属性 所以上面的更新可以写成

var data = {/*new child data*/};

var query = child.update(data).where(child.id.equals(data.id)).toQuery();

connection.query(query.text, query.values, function(err, result) {

  res.redirect('/index');
});