.createEach()
在数据库中创建一组记录。
await Something.createEach(initialValues);
或者
var createdRecords = await Something.createEach(initialValues).fetch();
参数 | 类型 | 详情 | |
---|---|---|---|
1 | initialValues | 一个包含新记录属性的字典数组。 |
注意:出于性能原因,从 Sails v1.0 / Waterline 0.13 开始,传递给此模型方法的
initialValues
数组中的字典在大多数情况下将在原地被修改(而在 Sails/Waterline v0.12 中,情况并非总是如此)。
类型 | 描述 |
---|---|
默认情况下,创建的记录不会作为结果提供,以优化性能。要覆盖默认设置,请链接 .fetch() ,新创建的记录将被发送回。 (请注意,这在某些适配器中需要额外的数据库查询。) |
名称 | 类型 | 何时 |
---|---|---|
UsageError | 如果传入无效内容,则抛出此错误。 | |
AdapterError | 如果数据库适配器中出现错误,则抛出此错误。有关如何协商唯一性错误(源于尝试创建具有重复值且违反唯一性约束的记录)的示例,请参阅 概念 > 模型和 ORM > 错误。 | |
错误 | 如果发生任何其他意外情况,则抛出此错误。 |
有关在 Sails 和 Waterline 中协商错误的示例,请参阅 概念 > 模型和 ORM > 错误。
键 | 类型 | 详情 |
---|---|---|
fetch | 如果设置为 true ,则创建的记录将被发送回。默认为 false 。 |
有关元键的更多信息,请参阅 .meta()。
在数据库中创建名为 Finn 和 Jake 的用户
await User.createEach([{name:'Finn'}, {name: 'Jake'}]);
var createdUsers = User.createEach([{name:'Finn'}, {name: 'Jake'}]).fetch();
sails.log(`Created ${createdUsers.length} user${createdUsers.length===1?'':'s'}.`);
- 此方法可与
await
、Promise 链或 传统的 Node 回调 一起使用。- 您可以使用
.createEach
添加的记录数量受您正在使用的特定数据库的最大查询大小限制。MySQL 默认情况下限制为 4MB,但可以通过max_allowed_packet
设置 进行更改。MongoDB 对单个文档施加 16MB 的限制,但基本上对一次可以创建的文档数量没有限制。PostgreSQL 的最大大小非常大(约 1GB)。请参阅您数据库的文档以获取有关查询限制的更多信息。- 在进行非常大的批量插入时,需要注意的另一件事是绑定变量的最大数量。这因数据库而异,但指的是查询中被替换的值的数量。有关更多详细信息,请参阅 最大允许参数。
- 当使用
.fetch()
并手动为新记录指定主键值时,返回记录的排序顺序不保证(它因使用的数据库适配器而异)。