我已经阅读了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
或不使用我如何返回完整,而不是未决的错误响应),我将不胜感激。
答案 0 :(得分:2)
您的服务必须返回承诺。如果您的代码不是异步代码,则可以将其转换为Promise.resolve和Promise.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中还有更多信息。