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.resolvePromise.reject把它变成一个 Promise :

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 回答