如何制作Feathers(基于Express的API框架)返回错误响应

时间:2016-10-20 00:49:44

标签: feathersjs

我已经阅读了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或不使用我如何返回完整,而不是未决的错误响应),我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您的服务必须返回承诺。如果您的代码不是异步代码,则可以将其转换为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);

error handling chapter中还有更多信息。