私はHerokuで動作するSails.jsアプリケーションを構築しています。数時間ごとに「CRON」ジョブを実行するには、Heroku Schedulerを使用する必要があります。スケジューラでは1つのコマンドしか実行できないため、1時間ごとに$ node sendEmails.js
を実行するように設定しています。プロジェクトルート内のファイルからSails.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
}
}
@paulgdm私はこの文脈で実際にサービスを使用することはできません。私が達成しようとしているのは、コマンドラインからsails.jsアプリケーション内のいくつかの関数を呼び出すことができるということです。これは、Herokuでスケジュールされたジョブを実行できる唯一の方法です。コマンドラインからSailsコントローラ機能にアクセスするにはどうすればよいですか? – Nag
@Nagあなたの意見を見る...あなたの 'app.js'ファイルを編集する必要があるのではないかと心配しています。そこでは、セイルリフトを呼び出すときに何かをすることができます。たぶんあなたの問題を解決することができます。しかし、セイルズが使用されるように設計された方法ではないことに注意してください!それは後にMVCフレームワークです。 – paulogdm