【发布时间】:2015-07-31 16:06:57
【问题描述】:
我的 node.js app.js 中有以下代码:
var express = require('express')
,cors = require('cors')
,app=express();
var users = require('./routes/users');
//some other codes
.....
app.use('/', routes);
app.use('/users', users );
如果向/users/adduser 发出请求,它将转到路由文件夹中的users.js。
现在我想添加一个过滤器,它将捕获所有 POST 请求并进行一些验证,并且只有在满足条件时,POST 才应该转到其处理程序。
即,如果我收到带有 POST 请求的 /users/adduser,在转到路由文件夹中 users.js 中的方法之前,我应该能够捕获该请求并在不满足条件时停止它。
更新 1 现在我有了这个 app.use 函数,但结果我得到了未定义,因为它没有等到函数返回值
app.use(function (req, res, next) {
req.db = db;
if (req.method != "POST") {
next();
}
else {
var userData = req.body;
var result = Check(userData);
if(result){
next();
}
}
});
function Check(userdata) {
var url = "someurl"+userdata.Id;
var request = require("request");
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
if (response.toJSON().body.id == userId) {
return true;
// i also tried next();
}
}
})
};
【问题讨论】:
-
你使用快递吗?绝对不清楚
app是什么 -
您应该检查哪种情况?
-
@simon 谢谢编辑了问题是的,我正在使用快递
-
@Edgar 我在发帖前检查权限和内容
-
使用中间件会有帮助。
标签: javascript node.js express