Swagger + Node.js的asynchronousvalidationfunction

所以,我使用Node.js + Swagger + MongoDB。

我试图validation所有请求都带有一个有效的auth_token,这是一个存储在mongo用户上的值。 我的问题是Swagger支持的validation器需要返回true或false,但是由于我必须检查Mongo来validationauth令牌,整个validation将变为asynchronous。

这里是代码,以防你需要它:

swagger.addValidator( function validate(req, path, httpMethod) { var apiKey = req.headers["auth_token"]; if (!apiKey) { apiKey = url.parse(req.url,true).query["auth_token"]; } models.user.validateAuthToken(apiKey, function(err, valid) { //Here is where I know if the auth token is valid and it checks against Mongo, so it's async }); return [something]; //this is what the validation sequence is expecting this function to do: return true or false }); 

我该如何解决这个问题?

你不能,你可能想用swagger打开一张票来启用asynchronousvalidation。

你使用Swagger 1.2还是2.0? 如果使用2.0,则可以使用swagger工具来连接中间件,以便为基于Swagger文档的请求连接安全处理程序。 它支持Swagger规范中定义的所有安全机制。

并且返回asynchronous函数的结果不起作用?

 swagger.addValidator( function validate(req, path, httpMethod) { var apiKey = req.headers[ 'auth_token' ]; if (!apiKey) { apiKey = url.parse(req.url, true).query[ 'auth_token' ]; } return models.user.validateAuthToken(apiKey, function(err, valid) { // check against mongo return validation; }); });