如果对post
进行了/user
,并且我的数据模型说用户必须拥有group
,那么在成功创建user
后,如何我触发了在sails.js中创建的新group
?就此而言,我如何通过afterCreate
等生命周期回调或其他方式进入另一个控制器?
答案 0 :(得分:1)
您无法调用模型中的控制器,这会违反MVC模式。您可以通过
创建群组Group.create(obj)
或将您的创建逻辑放在服务中。
答案 1 :(得分:1)
听起来你可能会混淆模型和控制器,如果你因为它提供的蓝图功能而成为Sails的新手,这很容易做到。也就是说:您不需要GroupController
来创建Group
模型实例,而GroupController.create
不是创建新实例的正确方法Group
以编程方式。 GroupController.create
是POST
到/group
时自动调用的方法,因为Sails已设置了"蓝图"在该位置创建行动。
以编程方式创建Group
的正确方法是使用create
模型类的Group
方法,该方法在Sails应用程序中全局可用。因此,在您的afterCreate
中,您可以:
afterCreate: function(values, cb) {
Group.create({user: values.id}).exec(cb);
}
请注意,最新版本的Sails(v0.10.0-rc5)支持嵌套创建,因此如果您已将User
和Group
定义为彼此associated ,你可以POST
这样的/user
:
{
name: "Joe Blow",
age: 25,
group: {
name: "Joe's group"
}
}
将自动创建组并与用户关联。如果您POST
使用主键嵌入Group
,则会搜索包含该键的现有组,并将其链接到新User
,而不是创建新的Group