如果post
已經取得了/user
,和我的數據模型表示,以往用戶必須擁有一個group
,如何成功創建一個user
,我會觸發在sails.js中創建一個新的group
?對於這個問題,我怎樣才能從像afterCreate
這樣的生命週期回調或通過其他方式進入另一個控制器?觸發從Sails.js的創建另一個資源的創建
0
A
回答
1
您不能在模型內部調用控制器,這會違反MVC模式。您可以通過創建組
Group.create(obj)
或將您的創建邏輯放入服務中。
1
聽起來好像你可能會混淆模型和控制器,如果你是Sails的新手,很容易做到,因爲它提供了藍圖藍圖。也就是說:您不需要GroupController
來創建Group
模型實例,並且GroupController.create
是而不是以編程方式創建新的Group
的正確方法。 GroupController.create
是一種在您POST
到/group
之間自動調用的方法,因爲Sails已在該位置設置了「藍圖」創建操作。
以編程方式創建Group
的正確方法是使用Group
模型類的create
方法,該方法在Sails應用程序中全局可用。因此,在您afterCreate
,你可以有:
afterCreate: function(values, cb) {
Group.create({user: values.id}).exec(cb);
}
注意帆(v0.10.0-RC5)的最新版本支持嵌套造成的,因此,如果您已經定義User
和Group
是associated對方,你可以只POST
這樣的事情/user
:
{
name: "Joe Blow",
age: 25,
group: {
name: "Joe's group"
}
}
和組將被創建並自動與用戶相關聯。如果您使用主鍵POST
嵌入式Group
,它將使用該鍵搜索現有組並將其鏈接到新的User
而不是創建新的Group
。
+0
這是一些非常好的信息,謝謝。不過,我確實不得不接受其他答案,因爲它確實回答了這個問題。 – bearfriend
相關問題
- 1. 創建觸發器從另一個表
- 2. 發佈到一個資源的URL以創建另一個不同的資源
- 3. 從資源創建一個CBitmap ID
- 4. 在Oracle中創建一個觸發器,它從另一個表
- 5. 創建一個新的角度$資源
- 6. 如何創建觸發器從另一個表中的數據
- 7. Android:從資源創建NinePatchDrawable
- 8. 創建從另一個
- 9. 創建從另一個
- 10. 創建從另一個
- 11. 創建一個事件觸發Outlook上的提醒創建
- 12. 不創建資源的POST
- 13. WPF - 創建使用資源風格的觸發器
- 14. Oracle - 創建更新另一個表的觸發器的問題
- 15. 如何創建sails.js
- 16. MySQL如何創建一個從另一個表中選擇的觸發器?
- 17. 創建一個觸發器,從phpMyAdmin中的另一個表中獲取信息
- 18. 用模型創建一個sails.js鉤子
- 19. jQuery的動態創建div來觸發另一個功能
- 20. 創建觸發器在另一個表中插入的行
- 21. 創建另一個
- 22. 從另一個類創建的數據創建var
- 23. 從資源觸發資源
- 24. 創建觸發器
- 25. 創建觸發器
- 26. 創建觸發器
- 27. 創建無觸發
- 28. 觸發後創建
- 29. 創建觸發器
- 30. 創建從源
我實際上並不想創建一個INSIDE模型組,我只想進入Group控制器。你是否說'Group'(因此'Group.create()')在我的'User'模型中可用? – bearfriend