帆のこの閉じた問題によると: https://github.com/balderdashy/sails/issues/835
CRUD Blueprint Overrides「もちろん、これはv0.10で提供されます」
Sailsjsサービスのブループリントを変更して、名前付きルート(残りの部分で使用)を許可します。現在、私は作成したすべてのコントローラーをカスタマイズする必要があります。これは、すでにブループリントにあるものの大部分が重複するアクションです。
このコードをコントローラーからブループリントオーバーライド領域に移動できると思いますが、そのコードをどこに配置するかは明確ではありません。
例や、sailの関連コードへのポインタだけでも、.10リポジトリは大歓迎です。
以下で説明する方法でSails 1.0のブループリントをオーバーライドするには、まずプロジェクトの「カスタムブループリント」プラグイン(npm install sails-hook-custom-blueprints
)をインストールする必要があります。
Sails v0.10でブループリントをオーバーライドするには、api/blueprints
フォルダーを作成し、その中にブループリントファイル(find.js
、create.js
など)を追加します。あなたは先導するためのセイルズブループリントフックの デフォルトアクションのコード を見ることができます。
カスタムブループリントの追加もサポートされていますが、現在はルートに自動的にバインドされません。 /blueprints/foo.js
ファイルを作成する場合は、/config/routes.js
ファイル内でそれにルートをバインドできます(例:)。
'GET /myRoute': {blueprint: 'foo'}
コントローラ内にアクション これらの名前 を追加して、デフォルトの動作を上書きできます
破壊行動を変える
module.exports = {
destroy: function(req,res){
Goal.update({ id: req.param('id') }, { deleted: true })
.exec(function (err, goal) {
if (err) return res.json(err, 400);
return res.json(goal[0]);
});
}
}
ブループリントでビルドを使用することは可能ですが、 withポリシー が最初に実行されます。これらのポリシーは、ユーザーがログインしているか、正しいアクセス権を持っているかなどを確認する場合があります。本当に便利!
各モデルでは、データが保存される前と後の両方で使用可能なコールバックがあります。掘り下げる: http://sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks
ブループリント結果に使用できるデフォルトのコールバックはありません。しかし、あきらめないでください。ブループリントでビルドを使用して、出力のみを変更することも可能です。これは最もエレガントなソリューションではないかもしれませんが、うまく機能します。ここで私の「ハック」をチェックしてください: Sails blueprints lifecycle