ブループリントの概念的な概要については、概念 > ブループリント を参照してください。
ブループリントの有効化/無効化のプロセスは、対象となるブループリントルートの種類(RESTfulルート、ショートカットルート、またはアクションルート)によって若干異なります。異なるブループリントのタイプについては、ブループリントルートのドキュメントセクションを参照してください。
ブループリントルートを変更するには、カスタムルートを明示的に設定することをお勧めします。同様に、ブループリントアクションをオーバーライドする場合は、独自のカスタムアクションを作成することをお勧めします。
しかし、本当に自分が何をしているのか理解している場合は、読み進めてください。
単一のモデルのRESTfulブループリントルートをオーバーライドするには、関連するコントローラーファイル(または関連するフォルダーのスタンドアロンアクション)に、適切な名前(find、findOne、create、update、destroy、populate、add、またはremove)のアクションを作成するだけです。
すべてのモデルの特定のブループリントをオーバーライドする場合は、sails-hook-custom-blueprints プラグインをチェックしてください。これらを自分で定義していなくても、Sailsは、アクションまたはショートカットブループリントがブループリント構成で有効になっている限り、各モデルに対して組み込みのCRUDロジックをJSON APIの形式で応答すること(ソート、ページネーション、フィルタリングのサポートを含む)を理解することが重要です。
ブループリントAPIは、仮想リクエストインタープリターのおかげで、WebSocketと互換性があります(カスタムアクションとポリシーも同様です)。使用例については、ブラウザSDKの参照セクション(リファレンス > WebSockets > sails.io.js)を参照してください。
.subscribe()
デフォルトでは、FindおよびFind Oneブループリントアクションは、ソケットリクエストが使用された場合に.subscribe()
を自動的に呼び出します。これにより、リクエスト元のソケットが返された各レコードにサブスクライブされます。ただし、同じソケットがio.socket.put()
(たとえば)を使用してUpdateまたはDestroyアクションにリクエストを送信した場合、デフォルトではリクエスト元のソケットにメッセージが送信されず、他の接続され、サブスクライブされたソケットにメッセージが送信されます。これは、UIコードがクライアントサイドSDKのコールバックを使用してサーバーの応答を個別に処理できるようにすることを目的としています(例:ローディングスピナーを置き換える)。
デフォルトでは、findブループリントアクション(WebSocketリクエストを介してトリガーされた場合)は、リクエスト元のソケットを、そのモデルの新しいインスタンスが作成されたことに関する通知にサブスクライブします。この動作は、sails.config.blueprints.autoWatch
をfalse
に設定することで、すべてのモデルに対して変更できます。
次の手法は、互換性の理由でのみサポートされています。ブループリントアクションを使用しているかどうかに関係なく、カスタムルートを使用してください!
スタンドアロンアクションファイルではなくコントローラーを使用している場合は、コントローラー定義に_config
キーを定義することにより、config/blueprints.js
の特定の設定をコントローラーごとに無効にすることができます。
// In /api/controllers/PetController.js
module.exports = {
_config: {
actions: false,
shortcuts: false,
rest: false
}
}
コントローラーごとの
shortcuts
スタイルの自動ルートの無効化はサポートされていません。これは、本番環境でshortcuts: true
を使用するべきではないため、決して必要ありません。