データベース内の既存のレコードを更新し、購読しているソケットにその変更を通知します。
PATCH /:model/:id
これは、id パラメータと一致するモデル内のレコードを更新し、新しく更新されたレコードをJSON辞書として返します。バリデーションエラーが発生した場合は、無効な属性と400
ステータスコードを含むJSONレスポンスが代わりに返されます。指定されたidと一致するモデルインスタンスが存在しない場合は、404
が返されます。
変更する属性は、フォームエンコード値またはJSONとしてHTTPボディに送信する必要があります。
パラメータ | 型 | 詳細 |
---|---|---|
model | 包含モデルのidentity。 例: 'product' (PATCH /product/5 内) |
|
id | 更新するレコードの主キー値。 例: '5' (PATCH /product/5 内) |
|
* | PATCH (RESTful)リクエストの場合、モデルで定義されている属性と同じ名前のボディパラメータを渡して、目的のレコードにそれらの値を設定します。GET (ショートカット)リクエストの場合、パラメータをクエリ文字列に追加します。 |
Applejackの趣味を「kickin」に変更する
PATCH /user/47
{
"hobby": "kickin"
}
{
"hobby": "kickin",
"id": 47,
"name": "Applejack",
"createdAt": 1485462079725,
"updatedAt": 1485476060873
}
アプリでWebSocketsを有効にしている場合、更新されたレコードを購読しているすべてのクライアントは、イベント名がモデルのidentity(例:user
)であり、データ「ペイロード」が以下の形式である通知を受け取ります。
verb: 'updated',
id: <the record primary key>,
data: <a dictionary of changes made to the record>,
previous: <the record prior to the update>
例えば、上記の例を続けると、User
#47を購読しているすべてのクライアント(リクエストを行っているクライアントを除く)は、以下のメッセージを受け取ります。
{
id: 47,
verb: 'updated',
data: {
id: 47,
hobby: 'kickin'
updatedAt: 1485476060873
},
previous: {
hobby: 'pickin',
id: 47,
name: 'Applejack',
createdAt: 1485462079725,
updatedAt: 1485462079725
}
}
更新によって他のレコードへのリンクが変更された場合、追加の通知がいくつかある可能性があります。
ユーザー#47をストア#25に再割り当てする場合、一対多の関連付けの「一」側を表すstore
を更新します。例えば
PATCH /user/47
{
"store": 25
}
新しいストア(25)を購読しているクライアントはaddedTo
通知を受け取り、古いストアを購読しているクライアントにはremovedFrom
通知が送信されます。これらの通知の詳細については、addブループリントリファレンスとremoveブループリントリファレンスを参照してください。
- このアクションを使用して、コレクション関連付け全体を置き換えることができます(たとえば、ユーザーの友達リストを置き換えるなど)。これは
replace
ブループリントアクションと同じ結果になります。コレクション内のアイテムを個別に変更するには、addまたはremoveアクションを使用します。- 以前のバージョンのSailsでは、このアクションは
PUT /:model/:id
ルートにバインドされていました。