我有这个带有数组的代码:
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%;}