.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の配列には含まれません。