我正在构建一个在Heroku上运行的Sails.js应用程序。我需要使用Heroku Scheduler来运行" CRON"每几个小时工作一次。调度程序只允许我运行单个命令,因此我将其设置为每1小时运行$ node sendEmails.js
。
问题是,sendEmails.js不是核心Sails.js项目的一部分,我需要它来调用ReportsController.js文件中的一个函数。我该怎么做呢?我不想将控制器逻辑复制到sendEmails.js,因为它对数据库和我无法复制的其他服务有很多依赖性。对于上下文:
/**
* ReportsController
*
* @description Server-side logic for managing reports
* @help See http://sailsjs.org/#!/documentation/concepts/Controllers
*/
module.exports = {
// I need to call this function from sendEmails.js which is in my project root
generate: function(req, res) {
// Logic for generating reports
}
}
答案 0 :(得分:1)
您可以通过多种方式执行此操作:
(更好)创建服务,然后调用服务名称,如Myservice.myfunction
甚至sails.myservice.function
。顾名思义,您的服务将可用于每个控制器,并可用于集中全局使用的代码。看看:Sails Services。然后,您可以在控制器内调用您的服务,然后您的服务可以(或不能)执行选项2(如果它适合您)。
(不太好)在控制器或服务中,为文件路径执行手册require
。像这样let myfunctions = require('../folder/myfile.js')
,然后调用像``myfunctions.myfunction(nargs). Don't forget to use
module.exports = {...}`这样的函数。