0

Feathers の本を読んだことがあるので、エラー応答を作成するには、適切なfeathers-errorsクラスをインスタンス化するだけでよいことを知っています。

import {BadRequest} from 'feathers-errors';
const errorResponse = new BadRequest(`foo`, `bar`);

ただし、そのエラー応答をユーザーに返すのに苦労しています。エラーレスポンスを返すだけのエンドポイントを作っても…

class SomeService {
    create(data) {
        return new BadRequest(`foo`, `bar`);
    }
}

動作しません: エラー応答を受け取る代わりに、応答がありません。Chrome デバッガー内では、応答が保留中であることがわかります (最終的にタイムアウトして ERR_EMPTY_RESPONSE になるまで)。

私は Express のエラー処理について読んでみましたが、例では、人々nextが応答をラップしていたのを見ました。ただし、nextエラー ハンドラーに由来するものであり、Feathers コードのどこでそのnext関数を取得できるかわかりません。

保留中ではない完全なnextエラー応答を返す方法を(使用するかどうかに関係なく) 説明してくれる人がいれば、大歓迎です。

4

1 に答える 1

2

サービスは promise を返さなければなりません。コードが非同期でない場合は、Promise.resolvePromise.rejectを使用してプロミスに変換できます。

class SomeService {
    create(data) {
        return Promise.reject(new BadRequest(`foo`, `bar`));
    }
}

また、適切にフォーマットされたエラーを取得するために、Express エラー ハンドラが登録されていることを確認してください。

const errorHandler = require('feathers-errors/handler');

// Last in the chain
app.use(errorHandler);

エラー処理の章にも詳しい情報があります。

于 2016-10-20T14:18:13.597 に答える