我有此代码和数组:
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
?
ps.s。我收到下一个错误:“数据”附近的语法错误]
除了语法错误(必须为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%;}