web-dev-qa-db-ja.com

sails.jsでオーバーライドするCRUDブループリント

帆のこの閉じた問題によると: https://github.com/balderdashy/sails/issues/835

CRUD Blueprint Overrides「もちろん、これはv0.10で提供されます」

Sailsjsサービスのブループリントを変更して、名前付きルート(残りの部分で使用)を許可します。現在、私は作成したすべてのコントローラーをカスタマイズする必要があります。これは、すでにブループリントにあるものの大部分が重複するアクションです。

このコードをコントローラーからブループリントオーバーライド領域に移動できると思いますが、そのコードをどこに配置するかは明確ではありません。

例や、sailの関連コードへのポインタだけでも、.10リポジトリは大歓迎です。

29
davepreston

更新

以下で説明する方法でSails 1.0のブループリントをオーバーライドするには、まずプロジェクトの「カスタムブループリント」プラグイン(npm install sails-hook-custom-blueprints)をインストールする必要があります。


Sails v0.10でブループリントをオーバーライドするには、api/blueprintsフォルダーを作成し、その中にブループリントファイル(find.jscreate.jsなど)を追加します。あなたは先導するためのセイルズブループリントフックの デフォルトアクションのコード を見ることができます。

カスタムブループリントの追加もサポートされていますが、現在はルートに自動的にバインドされません。 /blueprints/foo.jsファイルを作成する場合は、/config/routes.jsファイル内でそれにルートをバインドできます(例:)。

'GET /myRoute': {blueprint: 'foo'}
40
sgress454

コントローラ内にアクション これらの名前 を追加して、デフォルトの動作を上書きできます

破壊行動を変える

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]);
     });
  }
}
11
Nour Sammour

ブループリントでビルドを使用することは可能ですが、 withポリシー が最初に実行されます。これらのポリシーは、ユーザーがログインしているか、正しいアクセス権を持っているかなどを確認する場合があります。本当に便利!

各モデルでは、データが保存される前と後の両方で使用可能なコールバックがあります。掘り下げる: http://sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks

ブループリント結果に使用できるデフォルトのコールバックはありません。しかし、あきらめないでください。ブループリントでビルドを使用して、出力のみを変更することも可能です。これは最もエレガントなソリューションではないかもしれませんが、うまく機能します。ここで私の「ハック」をチェックしてください: Sails blueprints lifecycle

1
qualbeen