.replaceCollection()指定されたコレクションのすべてのメンバーを置換します(例:BlogPost #4 の comments)。
await Something.replaceCollection(parentId, association)
.members(childIds);
| 引数 | 型 | 詳細 | |
|---|---|---|---|
| 1 | parentId | 親レコードの主キー値(つまり、ID)。 数値または文字列である必要があります(例: '507f191e810c19729de860ea' または 49)。または、数値または文字列の配列を指定できます(例: ['507f191e810c19729de860ea', '14832ace0c179de897'] または [49, 32, 37])。この場合、子レコードは各親レコードで置換されます。 |
|
| 2 | association | 複数形(「コレクション」)の関連の名前(例:「pets」) | |
| 3 | childIds | 関連の新しいメンバーとなる子レコードの主キー値(つまり、ID)。これはこれらのレコードを作成したり、古いレコードを破棄したりするのではなく、指定された親にレコードをアタッチ/デタッチするだけであることに注意してください。 |
| 名前 | 型 | いつ? |
|---|---|---|
| UsageError | 無効なものが渡された場合にスローされます。 | |
| AdapterError | データベースアダプターで問題が発生した場合にスローされます。 | |
| Error | 予期しないことが発生した場合にスローされます。 |
SailsとWaterlineでのエラー処理の例については、コンセプト > モデルとORM > エラーを参照してください。
ユーザー3の場合、「pets」コレクション内のすべてのペットをペット99と98に置き換えます
await User.replaceCollection(3, 'pets')
.members([99,98]);
- このメソッドは、
await、プロミスチェーン、または従来のNodeコールバックで使用できます。- 関連が「双方向」(つまり、
viaを持っている)の場合、子レコードはそれに応じて変更されます。反対側の属性が単数形の場合、新しくリンクされた、またはリンク解除された各子レコードの外部キーが変更されます。複数形の場合、各子レコードのコレクションはそれに応じて変更されます。- さらに、
viaが反対側の単数形(「モデル」)属性を指している場合、.addToCollection()は必要に応じてこれらの子レコードを「奪い」ます。たとえば、次の複数形(「コレクション」)属性を持つEmployeeモデルがあるとします。involvedInPurchases: { collection: 'Purchase', via: 'cashier' }。この購入を従業員#7(Dolly)に割り当てるためにEmployee.addToCollection(7, 'involvedInPurchases', [47])を実行したが、購入#47がすでに別の従業員(例:#12、Motoki)に関連付けられていた場合、これはMotokiから購入を「奪い」、Dollyに与えます。言い換えれば、Employee.find([7, 12]).populate('involvedInPurchases')を実行した場合、DollyのinvolvedInPurchases配列には購入#47が含まれ、Motokiの配列には含まれません。