2017-11-12 10 views
0

におけるフックの仕事はどのよう:摘むfeathersjs次のように提供する説明があるfeathersjsドキュメントで

摘むは、指定されたものを除くすべてのフィールドを破棄し、どちらか からデータが送信または結果からを。データが配列または のページ番号を付けた結果である場合、フックは アイテムごとのフィールドを削除します。

import _pluck from '../common/_pluck'; 
import checkContextIf from './check-context-if'; 
import getItems from './get-items'; 
import replaceItems from './replace-items'; 

export default function (...fieldNames) { 
    return context => { 
    checkContextIf(context, 'before', ['create', 'update', 'patch'], 'pluck'); 
    if(context.params.provider) { 
     replaceItems(context, _pluck(getItems(context), fieldNames)); 
    } 

    return context; 
    }; 
} 

のgetItemsユーティリティは、フックの前または後にフック として使用されているかどうかに応じhook.data又は いずれかhook.result内の項目を返します。 find メソッドに対してhook.result.dataまたはhook.resultが返されます。

返される項目は、後続の処理を簡素化するための配列です。

replaceItemsユーティリティはgetItemsの逆で、元の場所にある のアイテムを返します。

私の質問は、checkContextIf関数に関するものです。この関数は、create、update、およびpatchメソッドの前に、プルックフックが呼び出されるのを防ぎます。どのようにpluckフックがクエリの結果に作用しますか?サービスコール後に結果が得られず、アフターフックで処理されないのですか?ドキュメント状態として

答えて

0

のgetItemsユーティリティは内の項目を返すのいずれかhook.data又はフックの前または後のフックとして使用されているかどうかに応じhook.result。

hook.dataは、あなたがデータベースに保存したくないフィールドを省略するために使用することができるようにcreatepatchまたはupdate要求で送信されたデータ(体)です。これは、hooks APIに記載されている:

    data
  • - 要求データを
+0

おかげ(createupdate及びpatchため)。 checkContextIf関数がエラーを発生させることは私の理解であるため、プルックフックはアフターフックとして使用できないと言うのは正しいですか?または、checkContextIf関数は、beforeフックであれば、作成、更新、およびパッチメソッドに対してのみ使用する必要があると言っていますか? – AlokJoshiOfAarmax

+0

https://github.com/feathers-plus/feathers-hooks-commonで問題を提出することがあります。あなたは正しいのですが、両方のケースでうまくいくはずです(ただし、そうではないようです)。 – Daff

+0

残念ながら、私はそれをする方法を知らない。 – AlokJoshiOfAarmax

関連する問題