我正在为我的应用程序开发一个后端路由,它需要添加多行(从客户端收到的数组中的每一项对应一行)。我的第一个想法是对我的数据进行 for
循环,并对每个数组项进行数据库查询,如下所示:
router.get('api/postGuests', (req, res) => {
const arrayOfPeople = req.body;
// arrayOfPeople looks like this for example: [{name: Jason, age: 24}, {name: Tyler, age: 34}]
for (let i=0; i<arrayOfPeople.length; i++) {
db.query('INSERT INTO people (name, age) VALUES (?, ?)', [arrayofPeople[i].name, arrayOfPeople[i].age])
}
})
问题是我认为对每一行进行单独的查询效率不高,而且考虑到这些查询是异步的,我可以看到随着规模的扩大会出现很多问题。
有人可以给我一些关于如何最好地解决这种情况的建议吗?谢谢!
最佳答案
无需使用多个语句。您可以使用单个 INSERT
语句插入多行。
只需调整您准备好的语句并立即传递所有值即可。请注意,传递给 db.query 的参数需要是包装在数组中的数组的数组。
简短示例:
const arrayOfPeople = [
{name: "Jason", age: 24},
{name: "Tyler", age: 34},
...
];
db.query(
'INSERT INTO people (name, age) VALUES ?',
[arrayOfPeople.map(item => [item.name, item.age])]
);
关于javascript - 如何在 REST 应用程序上使用 MySQL 将多行添加到 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75959024/