【发布时间】:2021-03-19 15:02:39
【问题描述】:
我有一个使用 Azure Functions (TypeScript) 创建的 API。这些函数接收 JSON 数据数组,将它们转换为 TypeORM 实体并将它们插入 Azure SQL 数据库。我最近遇到了一个问题,数组有数百个项目,我得到了一个错误:
The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request
我认为使用实体管理器一次保存所有数据会导致问题:
const connection = await createConnection();
connection.manager.save(ARRAY OF ENTITIES);
处理此问题的最佳可扩展解决方案是什么?我有几个想法,但我不知道它们是否有用,尤其是性能方面。
- 开始事务 -> 开始在
forEach循环中单独保存实体 -> 提交 - 将数组拆分为较小的数组 -> 开始事务 -> 单独保存较小的数组 -> 提交
- 还有别的吗?
目前数组大小为几十个或几百个,但偶尔也有可能包含 10k+ 个元素的数组。
【问题讨论】:
-
使用表值参数。不知道如何从 Azure Functions 中做到这一点
标签: sql-server azure-functions azure-sql-database typeorm