將外部記錄 (例如:留言) 新增至此記錄的其中一個集合 (例如:"comments")。
PUT /:model/:id/:association/:fk
此動作會將對其他記錄 ("外部" 或 "子" 記錄) 的參考新增到此記錄 ("主要" 或 "父" 記錄) 的特定集合中。
:id
與資料庫中存在的主要記錄不符,則會使用 res.notFound()
回應。:fk
與資料庫中存在的外部記錄不符,則會使用 res.notFound()
回應。via
),則該 via
指向的外部鍵或集合也將在外部記錄上更新。參數 | 類型 | 詳細資訊 |
---|---|---|
模型 | 父記錄所屬模型的 識別名稱 (identity)。 例如: 'employee' (在 /employee/7/involvedinPurchases/47 中) |
|
id | 所需父記錄的主鍵值。 例如: '7' (在 /employee/7/involvedInPurchases/47 中) |
|
關聯 | 集合屬性的名稱。 例如: 'involvedInPurchases' |
|
fk | 要新增到此集合的子記錄的主鍵值 (通常是 id)。 例如: '47' |
將採購單 #47 新增至 Dolly (員工 #7) 參與的採購清單
PUT /employee/7/involvedInPurchases/47
這會傳回父記錄「Dolly」。請注意,她現在參與了採購單 #47
{
"id": 7,
"name": "Dolly",
"createdAt": 1485462079725,
"updatedAt": 1485476060873,
"involvedInPurchases": [
{
"amount": 10000,
"createdAt": 1485476060873,
"updatedAt": 1485476060873,
"id": 47,
"cashier": 7
}
]
}
$.put('/employee/7/involvedInPurchases/47', function (purchases) {
console.log(purchases);
});
$http.put('/employee/7/involvedInPurchases/47')
.then(function (purchases) {
console.log(purchases);
});
io.socket.put('/employee/7/involvedInPurchases/47', function (purchases) {
console.log(purchases);
});
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
,則 updated
或 addedTo
通知也將發送給任何訂閱採購單 #47 (我們剛新增的子記錄) 的用戶端。
如果另一側的
via
連結屬性也是複數 (例如:cashiers
),則會發送另一個addedTo
通知。否則,如果via
指向單數屬性 (例如:cashier
),則會發送updated
通知。
最後,可能會發送第三個通知
如果將此採購單新增到 Dolly 的集合會從另一個員工的 involvedInPurchases
中「竊取」它,則任何訂閱該其他被竊取員工記錄 (例如:Motoki,員工 #12) 的用戶端都會收到 removedFrom
通知 (請參閱藍圖 > 從...移除)。
- 如果您想花更多時間了解 Dolly,可以在這裡取得與上述範例相關的更詳細逐步解說。
- 此動作適用於處理複數 (「集合」) 屬性。如果您想設定或取消設定單數 (「模型」) 屬性,只需使用 update 並將外部鍵設定為新外部記錄的 id (或
null
以清除關聯)。如果您想完全取代集合中的記錄集,請使用 replace 藍圖。上面的範例假設已啟用「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.js
和api/models/Employee.js
。