我有两个控制器,SocketController并且ProjectController
SocketController方法getData(data)
ProjectController有方法addProject(data)
我需要从getData()方法调用addProject().
我尝试使用,sails.controllers.ProjectController.addProject(data)但我得到以下错误:
找不到undefined的方法addProject
我services在Stack Overflow中搜索了另一种调用另一个控制器的方法,但这对我没用.有没有其他办法让这项工作?
Ter*_*rry 14
控制器只是导出公共方法的Node模块.你可以require像其他任何东西一样.因此,假设您的方法正确暴露module.exports,这将工作:
/* ProjectController */
module.exports = {
addProject: function(data) {
// ...
}
};
Run Code Online (Sandbox Code Playgroud)
/* SocketController */
// Assuming ProjectController.js exists in the same directory (default for Sails)
var projectController = require('./ProjectController');
module.exports = {
index: function(req, res) {
// ...
projectController.addProject(...);
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:我将补充说,使用服务是一个更好的地方,以保持常见的功能,如您的示例.服务允许复杂的逻辑与控制器层分离,并轻松地由应用程序的其他区域重用.通常应保留控制器以处理来自客户端的HTTP请求,并将数据传递到服务或模型层以操作数据库.我相信Sails默认使服务全局化,因此您不必担心require路径混乱.
小智 5
控制器函数也可以通过全局的sails 对象访问,而不需要使用require,但是ProjectController 的一个函数可以在下面找到:
sails.controllers.project.addProject
代替
sails.controllers.ProjectController.addProject
无论如何,您可能想要考虑在服务或模型中共享功能,如前所述。
| 归档时间: |
|
| 查看次数: |
6136 次 |
| 最近记录: |