如何制作 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 中还有更多信息。
我读过 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:
将它变成一个 promiseclass 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 中还有更多信息。