各Sailsフックは、単一の引数(実行中のsails
インスタンスへの参照)を取り、このドキュメントで後述するキーの1つ以上を持つオブジェクトを返すJavaScript関数として実装されます。最も基本的なフックは次のようになります。
module.exports = function myBasicHook(sails) {
return {};
}
あまり機能はしませんが、動作はします!
各フックは、ファイル名index.js
で独自のフォルダーに保存する必要があります。フォルダー名はフックを一意に識別する必要があり、フォルダーには任意の数の追加ファイルとサブフォルダーを含めることができます。前の例を拡張して、Sailsプロジェクト内のフォルダーapi/hooks/my-basic-hook
にmyBasicHook
を含むファイルをindex.js
として保存し、sails lift --verbose
でアプリを起動した場合、出力に次の内容が表示されます。
verbose: my-basic-hook フックが正常にロードされました。
以下の機能は、フックに実装するために利用できます。すべての機能はオプションであり、フック関数によって返されるオブジェクトに追加することで実装できます。
メインフック関数から返されるオブジェクトに追加されたその他のキーは、sails.hooks[<hook name>]
オブジェクトで提供されます。これは、カスタムフック機能がエンドユーザーに提供される方法です。フックに対してプライベートにしたいデータや関数は、返されるオブジェクトの外側に追加できます。
// File api/hooks/myhook/index.js
module.exports = function (sails) {
// This var will be private
var foo = 'bar';
return {
// This var will be public
abc: 123,
// This function will be public
sayHi: function (name) {
console.log(greet(name));
}
};
// This function will be private
function greet (name) {
return 'Hi, ' + name + '!';
}
};
上記のパブリック変数と関数は、それぞれsails.hooks.myhook.abc
およびsails.hooks.myhook.sayHi
として使用可能になります。