外部レコード(例:コメント)を、このレコードのコレクション(例:「comments」)から削除します。
DELETE /:model/:id/:association/:fk
このアクションは、あるレコードのコレクション(「プライマリ」または「親」レコード)から、別のレコード(「外部」または「子」レコード)への参照を削除します。このアクションでは、外部レコード自体は削除されず、リンクが解除されるだけです。
res.notFound()
を使用して応答します。res.notFound()
を使用して応答します。via
を持つ)の場合、そのvia
で指し示す外部キーまたはコレクションも、外部レコード上で更新されます。パラメータ | タイプ | 詳細 |
---|---|---|
model | 親レコードを含むモデルのidentity。 例: 'store' (/store/16/employeesOfTheMonth/7 内) |
|
id | 目的の親レコードの主キー値。 例: '16' (/store/16/employeesOfTheMonth/7 内) |
|
association | コレクション属性の名前。 例: 'employeesOfTheMonth' |
|
fk | コレクションから削除する子レコードの主キー値(通常はid)。 例: '7' |
小規模な食料品チェーン店向けのアプリを構築しているとします。各店舗には、その店舗の現在の「今月の従業員」を表示する大型テレビ画面があり、顧客やチームメンバーが来店時に確認できます。最新の状態を保つために、毎月1日に各店舗のシステム内の「今月の従業員」を変更するスケジュールされたジョブ(例:cronを使用)を作成します。
このスケジュールされたジョブの一環として、Dolly(従業員番号7)を店舗番号16のemployeesOfTheMonth
から削除するリクエストを送信するとします。
DELETE /store/16/employeesOfTheMonth/7
{
"id": 16,
"name": "Parmer and N. Lamar",
"createdAt": 1485552033435,
"updatedAt": 1485552048794,
"employeesOfTheMonth": [
{
"id": 12,
"name": "Motoki",
"createdAt": 1485462079725,
"updatedAt": 1485476060873
},
{
"id": 4,
"name": "Timothy",
"createdAt": 1485462079727,
"updatedAt": 1485476090874
}
]
}
アプリでWebSocketsを有効にしている場合、親レコードにサブスクライブしているすべてのクライアントは、削除された子に関する通知を受け取ります。通知イベント名は親モデルのidentity(例:store
)であり、「メッセージ」は次の形式になります。
id: <the parent record's primary key value>,
verb: 'removedFrom',
attribute: <the parent record collection attribute name>,
removedIds: <the now-removed child records' primary key values>
上記の例を続けると、従業員番号7にサブスクライブしているすべてのクライアント(リクエストを行ったクライアントを除く)は、次のメッセージを受け取ります。
{
id: 16,
verb: 'removedFrom',
attribute: 'employeesOfTheMonth',
removedIds: [ 7 ]
}
子レコードにサブスクライブしているクライアントは、追加の通知を受け取ります。
employeesOfTheMonth
がvia
を使用して定義されていると仮定すると、updated
またはremovedFrom
通知が、削除した子レコードであるDollyにサブスクライブしているクライアントにも送信されます。
反対側の
via
リンク属性が複数形の場合(例:employeeOfTheMonthAtStores
)、別のremovedFrom
通知が送信されます。それ以外の場合は、via
が単数形属性を指している場合(例:employeeOfTheMonthAtStore
)、updated
通知が送信されます。