error_handler.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. 'use strict';
  2. const routerMethod = require('../../config/routerMethod');
  3. const routerMondel = require('../../config/routerMondel');
  4. module.exports = () => {
  5. return async function errorHandler(ctx, next) {
  6. let jsons = { };
  7. const { url, method, body } = ctx.request;
  8. if (method !== 'GET') {
  9. const str = url.split('/');
  10. let mondel;
  11. let method;
  12. for (let i = 0; i < str.length; i++) {
  13. const e = str[i];
  14. if (e !== '' && e !== 'api') {
  15. if (e === 'create' || e === 'update' || e === 'delete') {
  16. method = routerMethod[e];
  17. if (e === 'delete') {
  18. break;
  19. }
  20. } else {
  21. mondel = routerMondel[e];
  22. }
  23. }
  24. }
  25. jsons = { mondel, method, data: body };
  26. }
  27. try {
  28. await next();
  29. if (method !== 'GET') {
  30. jsons.result = '成功';
  31. await ctx.service.log.create(jsons);
  32. }
  33. } catch (err) {
  34. if (method !== 'GET') {
  35. jsons.result = '失败';
  36. await ctx.service.log.create(jsons);
  37. }
  38. const { message } = err;
  39. let json = {
  40. errcode: -1001,
  41. errmsg: message,
  42. };
  43. if (err.code !== 'ERR_ASSERTION') {
  44. json = JSON.parse(message);
  45. }
  46. ctx.body = json;
  47. ctx.status = 400;
  48. }
  49. };
  50. };