[英]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.