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

Node.js 如何从项目根目录中的文件调用Sails.js控制器函数?,node.js,sails.js,Node.js,Sails.js,我正在构建一个在Heroku上运行的Sails.js应用程序。我需要使用每隔几个小时运行一次CRON作业。调度器只允许我运行一个命令,因此我将其设置为每1小时运行$node sendmails.js 问题是,sendmails.js不是核心Sails.js项目的一部分,我需要它来调用ReportsController.js文件中的函数。我该怎么做呢?我不想将控制器逻辑复制到sendmails.js,因为它与数据库和其他服务有很多依赖关系,我无法复制这些依赖关系。上下文: /** * Repor

我正在构建一个在Heroku上运行的Sails.js应用程序。我需要使用每隔几个小时运行一次CRON作业。调度器只允许我运行一个命令,因此我将其设置为每1小时运行$node sendmails.js

问题是,sendmails.js不是核心Sails.js项目的一部分,我需要它来调用ReportsController.js文件中的函数。我该怎么做呢?我不想将控制器逻辑复制到sendmails.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
    }
}

您可以通过以下几种方式完成此操作:

最好创建一个服务,然后调用服务名称,比如Myservice.myfunction甚至sails.Myservice.function。正如名字所说,您的服务将可用于每个控制器,并可用于集中全球使用的代码。看一看:。然后,您可以在控制器内调用您的服务,然后您的服务可以或不能执行选项2(如果适合您)

在控制器或服务中不是很好,请手动输入文件路径。像这样,让myfunctions=require'../folder/myfile.js',然后调用像``myfunctions.myfunctionnargs这样的函数。不要忘记使用module.exports={…}`


@paulgdm我不能在这种情况下真正使用服务。我试图实现的是能够从命令行调用sails.js应用程序中的某些函数,因为这是我在Heroku中运行计划作业的唯一方法。如何从命令行访问Sails控制器功能?@Nag我明白你的意思了。。。恐怕你需要编辑你的app.js文件。在那里,你可以做任何事,当你呼吁帆升降机。也许它能解决你的问题。但请注意,这不是风帆的设计用途!!!这是一个MVC框架。