繁体   English   中英

使用 mssql 和 node-sql 更新

[英]Using mssql and node-sql to UPDATE

我正在使用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;

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

现在我有这个:

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

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

这可以通过使用 lodash 的values来实现:

_.values(data);

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

我该如何解决这个问题?

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

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');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM