从某个记录的集合 (例如,“评论”) 中移除一个外部记录 (例如,一条评论)。
DELETE /:model/:id/:association/:fk
此操作会从某个记录的集合 (称为“主”或“父”记录) 中移除对另一个记录 (称为“外部”或“子”记录) 的引用。注意,此操作不会实际销毁外部记录,只是将其解除链接。
res.notFound()
响应。res.notFound()
响应。via
),那么外部记录上指向该 via
的外键或集合也会被更新。参数 | 类型 | 详情 |
---|---|---|
model | 包含父记录的模型的 标识。 例如, 'store' (在 /store/16/employeesOfTheMonth/7 中) |
|
id | 所需父记录的主键值。 例如, '16' (在 /store/16/employeesOfTheMonth/7 中) |
|
association | 集合属性的名称。 例如, 'employeesOfTheMonth' |
|
fk | 要从集合中移除的子记录的主键值(通常是 id)。 例如, '7' |
假设您正在为一家小型连锁杂货店构建应用程序。每家商店都有一个大型电视屏幕,上面会显示该商店当前的“本月员工”,以便顾客和团队成员在进店时看到。为了确保它保持最新,您构建了一个计划任务(例如,使用 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,那么每个 订阅 了父记录的客户端都会收到有关已移除子记录的通知,其中通知事件名称是父模型标识(例如,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
通知。