繁体   English   中英

从对象数组创建动态 SQL 更新

[英]Create dynamic SQL Update from an array of objects

我有一组对象,我正在尝试使用这些对象创建更新 SQL。

这是我的数组:

let dataUpdate = [
  {
     "field1":123,
     "field2":"BMW",
     "field3":"blue"
  }
]

这就是我想要做的:

let query: string = `UPDATE dataset.table SET` + dataTest.forEach((item:any) =>
  Object.entries(item).map(([key,value]) => {
    `${key} = '${value}'`
  }).join(',')
)

这就是我得到的:

UPDATE dataset.table SETundefined

这就是我需要的:

UPDATE dataset.table SET field2="BMW", field3="blue" WHERE field1=123

您需要将标准与更新分开。 我创建了一个名为updateQuery的 function ,它在下面构造了所需的查询。

 const quote = (val) => typeof val === 'string'? `"${val}"`: val; const updateQuery = (table, criteria, update) => `UPDATE ${table} SET ${Object.entries(update).map(([field, value]) => `${field}=${quote(value)}`).join(', ')} WHERE ${Object.entries(criteria).map(([field, value]) => `${field}=${quote(value)}`).join(' AND ')}`; const expected = 'UPDATE dataset.table SET field2="BMW", field3="blue" WHERE field1=123'; const actual = updateQuery( 'dataset.table', { 'field1': 123 }, { 'field2': 'BMW', 'field3': 'blue' } ); console.log(expected === actual);

暂无
暂无

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

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