2016-08-22 49 views
0

HEJ,节点自定义错误处理程序中间件优化?

我工作的一个的NodeJS平台,暴露出REST API内的推动者。
我需要实现一些自定义错误处理程序,它们将实现一些业务逻辑。

基本上,我必须处理POST请求,其内容编码为application/json
我期望收到一个对象的列表代表服务在一个数组中。阵列的
每个项目是一个对象,其确实具有以下结构

{ 
    "code": "sampleCode", 
    "id": "someId", 
    "status: "someStatus" 
} 

在业务逻辑的术语,每个服务属于一个家庭。并且每个家庭都有一些配置存储在属性文件中。

一旦我收到请求,我需要检查主体内容并应用一些会导致自定义错误的自定义规则。

规则是:

  • "code值不能为空。
  • "code"值必须是在属性
  • "code"如果代码值属于家族FOO或栏ID定义的列表不能为空

我使用lodash做试验实施了一些小单元的功能在收藏。

我主要的问题是,我需要去那些过程的异步吗?现在我只是调用它的功能。由于我对nodeJs非常陌生,特别是在企业环境中的最佳实践方面,我希望得到更多有经验的用户的意见?

执行业务逻辑的自定义错误处理程序应该是异步还是没有好处?

+0

通常情况下,这是一个好主意,在node.js中完全异步如果需要,最好不得不“重新同步”,而不是阻止事件循环的风险。 – DrakaSAN

回答

0

Nodejs基本上是异步的,所以一般来说,你不会做同步的东西。

如果使用expressjs或类似的,你应该请求之前创造出一种“过滤器”的,是这样的:

function validator(req, res, next){ 
    //my validation code 
    next(); 
} 

app.get('/my/endpoint', validator, function (req, res) { 
    req.send(); 
}); 
+0

我明白了,看起来公平,在我的使用案例中实现起来有点复杂,因为应用程序是大型生态系统的一部分。它确实使用express,但在引擎盖下作为从swagger yaml文件生成的路由。我认为我需要深入分析这些模块,以便真正理解正在发生的事情并使用正确的处理程序 – anchnk

+1

express基于中间件的概念http://expressjs.com/zh/guide/using-middleware.html#middleware 。如果您可以访问路线,请指定路线,您可能只需要添加额外的功能,然后拨打电话即可。肯定会更深入,因为它似乎是一种自定义配置。 –

相关问题