2014-04-17 24 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