如何从项目根目录中的文件调用Sails.js控制器函数?

时间:2017-11-01 18:19:00

标签: node.js sails.js

我正在构建一个在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
    }
}

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式执行此操作:

  1. (更好)创建服务,然后调用服务名称,如Myservice.myfunction甚至sails.myservice.function。顾名思义,您的服务将可用于每个控制器,并可用于集中全局使用的代码。看看:Sails Services。然后,您可以在控制器内调用您的服务,然后您的服务可以(或不能)执行选项2(如果它适合您)。

  2. (不太好)在控制器或服务中,为文件路径执行手册require。像这样let myfunctions = require('../folder/myfile.js'),然后调用像``myfunctions.myfunction(nargs). Don't forget to use module.exports = {...}`这样的函数。