以下の説明を読む前に、データ・フックについてをお読みください。
注意:データフックはサーバー上で実行されます。つまり、コードが生成するログはプレビューモードの Developer Console には表示されません。ログを見るには、組み込みのSite Eventsツールを使用してください。
データ・フックのコードは、サイトのBackendセクションにあるdata.jsというファイルに格納されています。
このコードを自分で書いてファイルに追加するか、ベロサイドバーを使ってテンプレートコードを生成することができます。
サイドバーを使ってフックのテンプレートを生成する:
フックを登録するコードは以下のような書式になる:
1
について コレクション名
はフックが登録されるコレクションの名前です。フックの フック名
は フックタイプ.
フック関数は2つのパラメーターを取る。最初のパラメータは、どのフックが呼び出されたかに依存します。現在のアイテム、現在のアイテムのID、クエリ、カウント、エラーのいずれかになります。2つ目のパラメータは、フックが影響するコレクションの名前、現在のユーザのID、現在のユーザのパーミッションロールなど、フックに関するコンテキスト情報を含むオブジェクトです。
フック関数は特定の型を返すことが期待されている。異なる型の値を返した場合、その値は無視される。
各種フックのパラメータと期待される戻り値の詳細については、Data APIリファレンスを参照のこと。
コレクション内の複数のアイテムに影響するインタラクションのフックは、各アイテムに対して1回ずつ、繰り返し呼び出されます。
注釈
data.js
.詳しくは モジュール・エクスポート構文.一般論として、フックは次のように機能する:
例えば、次のようなフックだ:
1
コレクションに挿入されたアイテムを見てみると、タイトルがすべて大文字であることがわかる。
フックを使用すると、アイテムが特定の要件を満たさない場合に、コレクションへの追加を防ぐことができます。次の例では beforeInsert()
フックを使用してメールアドレスフィールドを検証します。メールアドレスが無効な場合、この関数は Promise.reject()
となり、アイテムはコレクションに追加されない。
1
関数が実行された後にトリガーするフックは、コレクション内のアイテムには影響しません。コレクション内のアイテムのコピーである関数が返すアイテムにのみ影響を与えることができます。
注意 コレクションデータを変更するために `afterQuery()` フックを使用しないでください。これはコンテンツ管理システム(CMS)のロードに失敗する原因になります。他のデータ操作を行う前にクエリの結果を変更する必要がある場合は、`beforeInsert()`や`beforeUpdate()` などの適切なフックを使用してください。
この記事のコードでは、以下のAPIを使用している。詳しくはAPIリファレンスをご覧ください。