更新資料庫中現有的記錄,並通知已訂閱的 sockets 記錄已變更。
PATCH /:model/:id
此操作會更新模型中符合 id 參數的記錄,並以 JSON 字典的形式回應新更新的記錄。如果發生驗證錯誤,則會傳回包含無效屬性的 JSON 回應,以及 400
狀態碼。如果沒有符合指定 id 的模型實例存在,則會傳回 404
。
要變更的屬性應以 form-encoded 值或 JSON 格式在 HTTP body 中傳送。
參數 | 類型 | 詳細資訊 |
---|---|---|
model | 包含模型的 identity (識別)。 例如: 'product' (在 PATCH /product/5 中) |
|
id | 要更新的記錄的主鍵值。 例如: '5' (在 PATCH /product/5 中) |
|
* | 對於 PATCH (RESTful) 請求,請在 body 參數中傳入與模型上定義的屬性名稱相同的名稱,以在所需的記錄上設定這些值。對於 GET (快捷方式) 請求,請將參數新增至查詢字串。 |
將 Applejack 的嗜好變更為 "kickin"
PATCH /user/47
{
"hobby": "kickin"
}
{
"hobby": "kickin",
"id": 47,
"name": "Applejack",
"createdAt": 1485462079725,
"updatedAt": 1485476060873
}
如果您為您的應用程式啟用了 WebSockets,那麼每個訂閱更新記錄的客戶端都會收到通知,其中事件名稱是模型 identity (例如 user
),並且資料 “payload (酬載)” 具有以下格式
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
,它代表 one-to-many association (一對多關聯) 的 “one (一)” 方。例如
PATCH /user/47
{
"store": 25
}
訂閱新商店 (25) 的客戶端將收到 addedTo
通知,而 removedFrom
通知將發送給任何訂閱舊商店的客戶端。請參閱 add blueprint reference (新增藍圖參考) 和 remove blueprint reference (移除藍圖參考) 以取得有關這些通知的更多資訊。
- 此動作可用於替換整個集合關聯 (例如,替換使用者的朋友列表),達到與
replace
blueprint action (取代藍圖動作) 相同的結果。若要個別修改集合中的項目,請使用 add (新增) 或 remove (移除) 動作。- 在先前的 Sails 版本中,此動作綁定到
PUT /:model/:id
路由。