替换此记录的某个集合(例如,“comments”)中的所有外键记录。
PUT /:model/:id/:association
此操作会重置对属于特定此记录(“主”或“父”记录)集合的“外键”或“子”记录的引用,并替换集合中任何现有的引用。
:id
与数据库中存在的任何主记录不对应,则此操作将使用res.notFound()
进行响应。via
),则外键记录上的外键或集合也将更新。参数 | 类型 | 详情 |
---|---|---|
model | 父记录所属模型的标识。 例如 'employee' (在/employee/7/involvedinPurchases 中) |
|
id | 所需父记录的主键值。 例如 '7' (在/employee/7/involvedInPurchases 中) |
|
association | 集合属性的名称。 例如 'involvedInPurchases' |
|
fks | 用作此集合的新成员的子记录的主键值(通常是 ID)。 例如 [47, 65] |
除非您使用开发专用快捷蓝图路由发出此请求,否则应在PUT请求正文中发送
fks
参数,在这种情况下,您可以将其简单地包含在查询字符串中,例如?fks=[47,65]
。
假设您负责维护大型连锁杂货店的记录,而收银员Dolly(员工#7)一直声称参与了大量的购买,而实际上她只为两位顾客结了账。由于杂货店连锁店的老板非常宽容,Dolly可以保住工作,但现在您必须更新Dolly的involvedInPurchases
集合,使其仅包含购买#47和#65。
PUT /employee/7/involvedInPurchases
[47, 65]
这将返回父记录Dolly。请注意,她的记录仅显示她参与了购买#47和#65。
{
"id": 7,
"name": "Dolly",
"createdAt": 1485462079725,
"updatedAt": 1485476060873,
"involvedInPurchases": [
{
"amount": 10000,
"createdAt": 1485551132315,
"updatedAt": 1486355134239,
"id": 47,
"cashier": 7
},
{
"amount": 5667,
"createdAt": 1483551158349,
"updatedAt": 1485355134284,
"id": 65,
"cashier": 7
}
]
}
如果您已为应用程序启用了WebSockets,则每个已订阅父记录的客户端都将为新集合(如果有)中的每个子记录收到一个addedTo
通知。
例如,继续上面的示例,假设Dolly之前的involvedInPurchases
包含购买#65、#42和#33。订阅了Dolly员工记录的所有客户端(除了发出请求的客户端)将收到两种通知:她之前未参与的购买(#47)的addedTo
,以及她不再参与的购买(#42和#33)的removedFrom
。
{
id: 7,
verb: 'addedTo',
attribute: 'involvedInPurchases',
addedIds: [ 47 ]
}
以及
{
id: 7,
verb: 'removedFrom',
attribute: 'involvedInPurchases',
removedIds: [ 42, 33 ]
}
请注意,购买#65未包含在
addedTo
通知中,因为它在Dolly之前的involvedInPurchases
列表中。
订阅子记录的客户端会收到其他通知
假设involvedInPurchases
具有via
,则还会将updated
或addedTo
/removedFrom
通知发送给已订阅我们刚刚链接或取消链接的任何购买的客户端。
如果另一侧(Purchase)上的
via
链接属性也是复数(例如cashiers
),则将发送addedTo
或removedFrom
通知。否则,如果via
指向单数属性(例如cashier
),则将发送updated
通知。
最后,可能会发送第三种通知
如果为Dolly提供此新的Purchases集合会从其他员工的involvedInPurchases
中“窃取”任何购买,则订阅了这些其他被窃取员工记录(例如,员工#12的Motoki和员工#4的Timothy)的任何客户端都将收到removedFrom
通知。(请参阅蓝图 > 从中移除)。