2

我将mssqlnode-sql一起使用来构建SELECT查询,但我找不到任何示例如何使用它来构建 UPDATE 查询。我有一个对象,其中属性对应于表字段,我想更新所有这些对象。

认为:

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;

mssql在不知道属性值和数量的情况下如何使用它data

现在我有这个:

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

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

这可以通过使用 lodash's 来实现values

_.values(data);

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

我该如何解决这个问题?

4

2 回答 2

1

这将根据表列的顺序返回一个值数组:

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

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

于 2015-07-01T12:05:48.760 回答
0

几天后,我发现 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');
});
于 2015-07-13T06:17:07.777 回答