更新数据库中已有的记录并通知订阅的套接字该记录已更改。
PATCH /:model/:id
这将更新模型中与 **id** 参数匹配的记录,并以新的更新后的记录作为 JSON 字典形式进行响应。如果发生验证错误,将返回一个包含无效属性和 `400` 状态代码的 JSON 响应。如果不存在与指定 **id** 匹配的模型实例,则返回 `404`。
要更改的属性应以表单编码的值或 JSON 的形式发送到 HTTP 主体。
参数 | 类型 | 详情 |
---|---|---|
model | 包含模型的 标识。 例如:`'product'`(在 `PATCH /product/5` 中) |
|
id | 要更新的记录的主键值。 例如:`'5'`(在 `PATCH /product/5` 中) |
|
* | 对于 `PATCH`(RESTful)请求,请在主体参数中传递与模型上定义的属性同名的参数,以在所需记录上设置这些值。对于 `GET`(快捷方式)请求,请将参数添加到查询字符串。 |
将 Applejack 的爱好更改为“踢踏”
PATCH /user/47
{
"hobby": "kickin"
}
{
"hobby": "kickin",
"id": 47,
"name": "Applejack",
"createdAt": 1485462079725,
"updatedAt": 1485476060873
}
如果您为应用程序启用了 WebSocket,那么每个客户端 订阅 了更新后的记录,将收到一条通知,其中事件名称是模型标识(例如:`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` 通知。有关这些通知的更多信息,请参见 添加蓝图参考 和 删除蓝图参考。
- 此操作可用于替换整个集合关联(例如,替换用户的“好友”列表),从而达到与 `replace` 蓝图操作 相同的结果。要单独修改集合中的项目,请使用 添加 或 删除 操作。
- 在之前的 Sails 版本中,此操作绑定到 `PUT /:model/:id` 路由。