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

问题描述 投票:0回答:1

我有此代码和数组:

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。我收到下一个错误:“数据”附近的语法错误]

javascript sql node.js
1个回答
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%;}
© www.soinside.com 2019 - 2024. All rights reserved.