使用 feathers-sequelize 捕获无效请求和 return 错误
Catch invalid request & return error with feathers-sequelize
我是 feathers 的新手,正在构建一个 API,使用 feathers-cli 生成。如果客户端执行无效的 GET 请求:
例如。 http://localhost:3030/stations/?asdfasdf
它 return 是一个 500 错误:
ER_BAD_FIELD_ERROR: Unknown column 'stations.asdfasdf' in 'where clause'
我不想将这样的错误报告给客户,而是想 return 一个“400 错误请求”。我试过使用 hook.error
设置一个 after hook 但这并没有捕捉到 sequelize 错误。
如何捕获错误并return向客户端发送更安全、更通用的消息?
error
钩子是一种单独的新钩子类型。使用 1.x feathers-cli 将您的 services index file 更改为
// Set up our before hooks
messageService.before(hooks.before);
// Set up our after hooks
messageService.after(hooks.after);
到
// Set up hooks
messageService.hooks(hooks);
然后在hooks/index.js
file中添加
exports.error = {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
};
您现在可以使用它来创建错误挂钩。对于这样的情况:
const 错误 = require('feathers-errors');
exports.error = {
all: [
function(hook) {
if(is(hook.error, 'ER_BAD_FIELD_ERROR')) { // Somehow check the Sequelize error type
hook.error = new errors.BadRequest('Invalid query field');
}
}
],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
};
我是 feathers 的新手,正在构建一个 API,使用 feathers-cli 生成。如果客户端执行无效的 GET 请求:
例如。 http://localhost:3030/stations/?asdfasdf
它 return 是一个 500 错误:
ER_BAD_FIELD_ERROR: Unknown column 'stations.asdfasdf' in 'where clause'
我不想将这样的错误报告给客户,而是想 return 一个“400 错误请求”。我试过使用 hook.error
设置一个 after hook 但这并没有捕捉到 sequelize 错误。
如何捕获错误并return向客户端发送更安全、更通用的消息?
error
钩子是一种单独的新钩子类型。使用 1.x feathers-cli 将您的 services index file 更改为
// Set up our before hooks
messageService.before(hooks.before);
// Set up our after hooks
messageService.after(hooks.after);
到
// Set up hooks
messageService.hooks(hooks);
然后在hooks/index.js
file中添加
exports.error = {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
};
您现在可以使用它来创建错误挂钩。对于这样的情况:
const 错误 = require('feathers-errors');
exports.error = {
all: [
function(hook) {
if(is(hook.error, 'ER_BAD_FIELD_ERROR')) { // Somehow check the Sequelize error type
hook.error = new errors.BadRequest('Invalid query field');
}
}
],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
};