将数组中的键值对插入 SQL 查询字符串



我有这个带有数组的代码:

const dataToset = [
{ key: 'key1', value: "some data" },
{ key: 'key2', value: 37 },
];
await db.query(`
UPDATE some_table 
SET ${dataToset.map(data => `${data.key} = ${data.value}`)}
WHERE id ${id}`);

结果查询是下一个:UPDATE some_table SET key1=some data,key2=37 WHERE id=1它失败了,因为some data应该作为字符串传递。 如何获取有效查询:UPDATE some_table SET key1="some data",key2=37 WHERE id=1

附言我收到下一个错误:"数据"附近的语法错误

除了语法错误(必须WHERE id=1(,我会使用.join(', ')进行显式数组到字符串的转换,并稍微更改模板字符串,注意(仅(字符串值应括在引号中:

const dataToset = [
{ key: 'key1', value: "some data" },
{ key: 'key2', value: 37 },
],
id = 1
query = `
UPDATE some_table
SET ${
dataToset
.map(({key,value}) => 
typeof value == 'string' ? 
key+"='"+value+"'" : 
key+'='+value)
.join(', ')
}
WHERE id=${id}
`
console.log(query)
.as-console-wrapper{min-height:100%;}

最新更新