编辑页面

添加(蓝图)

将一个外部记录(例如评论)添加到该记录的某个集合中(例如“评论”)。

PUT /:model/:id/:association/:fk

此操作将对某个记录的特定集合(“主”或“父”记录)添加对其他记录(“外部”或“子”记录)的引用。

参数

#
参数 类型 详细信息
model String 父记录所属模型的 标识

例如:'employee' (在/employee/7/involvedinPurchases/47中)
id String 所需父记录的主键值。

例如:'7' (在/employee/7/involvedInPurchases/47中)
association String 集合属性的名称。

例如:'involvedInPurchases'
fk String 要添加到此集合的子记录的主键值(通常是 id)。

例如:'47'

示例

#

将采购 #47 添加到 Dolly(员工 #7)参与的采购列表中

PUT /employee/7/involvedInPurchases/47

Run in Postman

预期响应
#

此操作返回“Dolly”,即父记录。请注意,她现在参与了采购 #47

{
  "id": 7,
  "name": "Dolly",
  "createdAt": 1485462079725,
  "updatedAt": 1485476060873,
  "involvedInPurchases": [
    {
      "amount": 10000,
      "createdAt": 1485476060873,
      "updatedAt": 1485476060873,
      "id": 47,
      "cashier": 7
    }
  ]
}
使用 jQuery
#
$.put('/employee/7/involvedInPurchases/47', function (purchases) {
  console.log(purchases);
});
使用 Angular
#
$http.put('/employee/7/involvedInPurchases/47')
.then(function (purchases) {
  console.log(purchases);
});
使用 sails.io.js
#
io.socket.put('/employee/7/involvedInPurchases/47', function (purchases) {
  console.log(purchases);
});
使用 cURL
#
curl https://127.0.0.1:1337/employee/7/involvedInPurchases/47 -X "PUT"

套接字通知

#

如果您的应用程序启用了 WebSockets,则每个订阅了主记录的客户端 订阅 将收到一条通知,其中通知事件名称为主模型标识(例如:'employee'),消息具有以下格式

id: <the parent record primary key value>,
verb: 'addedTo',
attribute: <the parent record collection attribute name>,
addedIds: <the now-added child records' primary key values>

例如,继续上面的示例,所有订阅了 Dolly,即员工 #7 的客户端(*除了*发出请求的客户端)将收到以下消息

{
  id: 7,
  verb: 'addedTo',
  attribute: 'involvedInPurchases',
  addedIds: [ 47 ]
}

订阅子记录的客户端将收到额外的通知

假设involvedInPurchases有一个via,则updatedaddedTo通知也将发送给任何 订阅 了采购 #47(我们刚刚添加的子记录)的客户端。

如果另一侧的via链接属性也为 复数(例如:cashiers),则将发送另一个addedTo通知。否则,如果via 指向一个单数属性(例如:cashier),则将发送 updated通知

最后,可能会发送第三个通知

如果将此采购添加到 Dolly 的集合中会从另一个员工的involvedInPurchases中“偷走”它,则订阅了那个被偷走的员工记录(例如,Motoki,员工 #12)的任何客户端将收到removedFrom通知(请参阅 蓝图 > 从中移除)。

注意

#
  • 如果您想花更多时间与 Dolly 交流,可以在 此处找到与上述示例相关的更详细的演练。
  • 此操作用于处理 *复数*(“集合”)属性。如果您想设置或取消设置 *单数*(“模型”)属性,只需使用 更新 并将外部键设置为新外部记录的 id(或null以清除关联)。如果您想用另一组记录完全 *替换* 集合中的记录集,请使用 替换 蓝图。
  • 上面的示例假定“rest”蓝图已启用,并且您的项目至少包含一个名为 'Employee' 的模型,该模型具有属性:involvedInPurchases: {collection: 'Purchase', via: 'cashier'},以及一个名为 Purchase 的模型,该模型具有属性:cashier: {model: 'Employee'}。您可以通过运行以下命令快速实现这一点

    $ sails new foo
    $ cd foo
    $ sails generate model purchase
    $ sails generate model employee
    

...然后编辑api/models/Purchase.jsapi/models/Employee.js

有什么遗漏吗?

如果您发现我们遗漏了什么或可以改进的地方,请按照 此链接 操作并向 sails 存储库提交拉取请求。一旦我们合并它,这些更改将在下次网站部署时反映在网站上。

参考

参考