2014-04-17 104 views
0

如果post已經取得了/user,和我的數據模型表示,以往用戶必須擁有一個group,如何成功創建一個user,我會觸發在sails.js中創建一個新的group?對於這個問題,我怎樣才能從像afterCreate這樣的生命週期回調或通過其他方式進入另一個控制器?觸發從Sails.js的創建另一個資源的創建

回答

1

您不能在模型內部調用控制器,這會違反MVC模式。您可以通過創建組

Group.create(obj) 

或將您的創建邏輯放入服務中。

+0

我實際上並不想創建一個INSIDE模型組,我只想進入Group控制器。你是否說'Group'(因此'Group.create()')在我的'User'模型中可用? – bearfriend

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)的最新版本支持嵌套造成的,因此,如果您已經定義UserGroupassociated對方,你可以只POST這樣的事情/user

{ 
    name: "Joe Blow", 
    age: 25, 
    group: { 
     name: "Joe's group" 
    } 
} 

和組將被創建並自動與用戶相關聯。如果您使用主鍵POST嵌入式Group,它將使用該鍵搜索現有組並將其鏈接到新的User而不是創建新的Group

+0

這是一些非常好的信息,謝謝。不過,我確實不得不接受其他答案,因爲它確實回答了這個問題。 – bearfriend