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

How can I make Feathers (Express-based API Framework) Return Error Responses

我读过 Feathers 一书,所以我知道要创建错误响应,我只需实例化适当的 feathers-errors class:

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

但是,我很难 return 将该错误响应发送给用户。即使我创建了一个除了 return 错误响应之外什么都不做的端点...

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

它不起作用:我没有收到错误响应,而是没有收到任何响应,并且在 Chrome 调试器中我可以看到响应正在等待处理(直到它最终超时并变成 ERR_EMPTY_RESPONSE).

我尝试阅读有关 Express 错误处理的内容,在示例中我看到人们使用 next 来包装响应。但是,next 来自错误处理程序,我不确定在我的 Feathers 代码中我可以在哪里获得 next 函数。

如果有人能帮助解释(使用或不使用next)我如何return一个完成,而不是挂起,错误响应,我会很高兴感激不尽

您的服务必须return一个承诺。如果您的代码不是异步的,您可以使用 Promise.resolve and Promise.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);

error handling chapter 中还有更多信息。