.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 > エラー」で、一意性制約に違反する重複した値を持つレコードを作成しようとしたことによって生じる一意性エラーを処理する方法の例を参照してください。 | |
Error | その他予期しない事態が発生した場合にスローされます。 |
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
、プロミスチェーン、または従来のNodeコールバックで使用できます。.createEach
で追加できるレコードの数は、使用している特定のデータベースの最大クエリサイズによって制限されます。MySQLのデフォルトの制限は4MBですが、これはmax_allowed_packet
設定で変更できます。MongoDBは単一のドキュメントに16MBの制限を課していますが、一度に作成できるドキュメントの数には基本的に制限がありません。PostgreSQLには非常に大きな(約1GB)最大サイズがあります。クエリの制限については、データベースのドキュメントを参照してください。- 非常に大きな一括挿入を行う際に注意すべきもう1つの点は、バインドされた変数の最大数です。これはデータベースごとに異なりますが、クエリで代入される値の数を指します。詳細については、最大許容パラメータを参照してください。
.fetch()
を使用し、新しいレコードの主キー値を手動で指定する場合、返されるレコードのソート順序は保証されません(使用中のデータベースアダプターによって異なります)。