このレコードのコレクション(例:「comments」)内のすべての外部レコードを置換します。
PUT /:model/:id/:association
このアクションは、「外部」または「子」レコードへの参照をリセットします。これらのレコードは、特定のコレクションのこのレコード(「主」または「親」レコード)のメンバーであり、コレクション内の既存の参照をすべて置き換えます。
:id
がデータベースに存在する主レコードに対応しない場合、res.notFound()
を使用して応答します。via
を持つ)の場合、外部レコードの外部キーまたはコレクションも更新されることに注意してください。パラメータ | タイプ | 詳細 |
---|---|---|
model | 親レコードを含むモデルの識別子。 例: 'employee' (/employee/7/involvedinPurchases 内) |
|
id | 目的の親レコードの主キー値。 例: '7' (/employee/7/involvedInPurchases 内) |
|
association | コレクション属性の名前。 例: 'involvedInPurchases' |
|
fks | 子レコードの主キー値(通常はID)で、このコレクションの新しいメンバーとして使用されます。 例: [47, 65] |
開発専用のショートカットブループリントルートを使用していない限り、
fks
パラメータはPUTリクエスト本文で送信する必要があります。その場合、クエリ文字列に?fks=[47,65]
として含めることができます。
大規模な食料品店チェーンの記録管理を担当しているとします。キャッシャーのDolly(従業員番号7)は、実際には2人の顧客しか精算していなかったのに、多数の購入に関与していたと主張していました。食料品店チェーンのオーナーは非常に寛大なので、Dollyは仕事を続けることができますが、DollyのinvolvedInPurchases
コレクションを更新して、購入番号47と65のみを含むようにする必要があります。
PUT /employee/7/involvedInPurchases
[47, 65]
親レコードであるDollyを返します。彼女のレコードには、購入番号47と65に関与していることのみが表示されます。
{
"id": 7,
"name": "Dolly",
"createdAt": 1485462079725,
"updatedAt": 1485476060873,
"involvedInPurchases": [
{
"amount": 10000,
"createdAt": 1485551132315,
"updatedAt": 1486355134239,
"id": 47,
"cashier": 7
},
{
"amount": 5667,
"createdAt": 1483551158349,
"updatedAt": 1485355134284,
"id": 65,
"cashier": 7
}
]
}
アプリケーションでWebSocketsを有効にしている場合、親レコードにサブスクライブしているすべてのクライアントは、新しいコレクション(存在する場合)内の各子レコードに対して1つのaddedTo
通知を受信します。
上記の例を続けると、Dollyの以前のinvolvedInPurchases
には、購入番号65、42、33が含まれていたとします。Dollyの従業員レコードにサブスクライブしているすべてのクライアント(リクエストを行っているクライアントを除く)は、2種類の通知を受け取ります。以前は関与していなかった購入(#47)に対するaddedTo
と、関与しなくなった購入(#42と#33)に対するremovedFrom
です。
{
id: 7,
verb: 'addedTo',
attribute: 'involvedInPurchases',
addedIds: [ 47 ]
}
そして
{
id: 7,
verb: 'removedFrom',
attribute: 'involvedInPurchases',
removedIds: [ 42, 33 ]
}
購入番号65は、Dollyの以前の
involvedInPurchases
リストに含まれていたため、addedTo
通知には含まれていません。
子レコードにサブスクライブしているクライアントは、追加の通知を受け取ります。
involvedInPurchases
にvia
があったと仮定すると、updated
またはaddedTo
/removedFrom
通知は、リンクまたはリンク解除した購入のいずれかにサブスクライブしていたクライアントにも送信されます。
反対側(購入)の
via
リンクされた属性が複数形の場合(例:cashiers
)、addedTo
またはremovedFrom
通知が送信されます。そうでない場合、via
が単数形属性を指す場合(例:cashier
)、updated
通知が送信されます。
最後に、3番目の種類の通知が送信される場合があります。
Dollyにこの新しい購入コレクションを与えることが、他の従業員のinvolvedInPurchases
からそれらを「盗む」ことになる場合、それらの他の従業員(例:従業員番号12のMotokiと従業員番号4のTimothy)のレコードにサブスクライブしているクライアントは、removedFrom
通知を受け取ります。(ブループリント > remove fromを参照してください)。
- このブループリントは、指定された属性の関連レコードの全体を置き換えることを覚えておいてください。コレクションから単一の関連レコードを追加または削除し、コレクションの残りを変更しないようにするには、「追加」または「削除」ブループリントアクションを使用します。(ブループリント > add toおよびブループリント > remove fromを参照してください)。