2017-03-17 6 views
0

私はフェザーには新しく、feathers-cliで生成されたAPIをビルドしています。クライアントが無効なGETリクエストを実行した場合:feathers-sequelizeで無効なリクエスト&リターンエラーをキャッチ

たとえば、 http://localhost:3030/stations/?asdfasdf

それは500エラーを返します:

ER_BAD_FIELD_ERROR: Unknown column 'stations.asdfasdf' in 'where clause'

私はむしろ、クライアントにそのバックのようなエラーを報告していないと思いますし、代わりに代わりに「400不正な要求」を返すようにしたいと思います。私はhook.errorを使用してアフターフックを設定しようとしましたが、これはsequelizeエラーをキャッチしません。

エラーをキャッチして、より安全で汎用的なメッセージをクライアントに返すにはどうすればよいですか?

+0

私が与えた答えは、エラーに対処するための汎用的な方法を提供する必要がありますが、私はそれがかもしれないと思うので、あなたもhttps://github.com/feathersjs/feathers-sequelize/issues/newで問題を作成することができます一般的に変化する価値のあるもの。 – Daff

答えて

1

errorフックは別の新しいフックタイプです。 1.xの羽-CLIを使用して次にhooks/index.jsfileにあなたが今エラーを作成するために使用することができ

exports.error = { 
    all: [], 
    find: [], 
    get: [], 
    create: [], 
    update: [], 
    patch: [], 
    remove: [] 
}; 

を追加

// Set up hooks 
messageService.hooks(hooks); 

// Set up our before hooks 
messageService.before(hooks.before); 

// Set up our after hooks 
messageService.after(hooks.after); 

のようなものから、あなたのservices index fileを変更フック。あなたの場合はこのように:

const errors = require( 'feathers-errors');

exports.error = { 
    all: [ 
    function(hook) { 
     if(is(hook.error, 'ER_BAD_FIELD_ERROR')) { // Somehow check the Sequelize error type 
     hook.error = new errors.BadRequest('Invalid query field'); 
     } 
    } 
    ], 
    find: [], 
    get: [], 
    create: [], 
    update: [], 
    patch: [], 
    remove: [] 
}; 
+1

ありがとうございます!現在のバージョンではエラーフックが実装されていることを認識していませんでした。参考までに、私は次のコードを使用してエラーコードを取得しています: 'hook.error.original.code '、' ER_BAD_FIELD_ERROR'' – Finne

関連する問題