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