Javascript 如何在Node.js Express中使用多个请求处理功能?
我需要在我的应用程序中的大多数路由中执行重复的身份验证过程。我决定给它一些结构,并在中间件功能中完成重复的工作 如果auth进程无效,我应该响应并避免执行第二个函数,即终止请求 因此,不是:Javascript 如何在Node.js Express中使用多个请求处理功能?,javascript,node.js,express,Javascript,Node.js,Express,我需要在我的应用程序中的大多数路由中执行重复的身份验证过程。我决定给它一些结构,并在中间件功能中完成重复的工作 如果auth进程无效,我应该响应并避免执行第二个函数,即终止请求 因此,不是: app.route('/someRoute').all(function(request,response){}); 我试过这样的方法: app.route('/someRoute').all(repetitiveWork,secondMiddlewareFunction); 特别是这是我得到的虚拟示例
app.route('/someRoute').all(function(request,response){});
我试过这样的方法:
app.route('/someRoute').all(repetitiveWork,secondMiddlewareFunction);
特别是这是我得到的虚拟示例:
app.route('/rutas').get(sum,test);
function sum (request,response,next) {
if (5>1) {
response.status(144).end('Fin');
return next();
}
};
function test (request,response,next) {
response.send('Still alive');
};
然而,当我试图做一个GET to/rutas
的时候,我甚至没有得到响应。我做错了什么
响应结束后不能调用next(),调用next()是为了将请求/响应传递给堆栈中的下一个中间件。考虑这个例子:
var app = require('express')();
app.route('/rutas').get(sum, test);
app.listen(function () { console.log(this.address()); });
var i = 0;
function sum (request, response, next) {
i += 1;
if (i % 2 === 0) {
return response.status(200).end('Fin');
}
return next();
}
function test (request, response, next) {
response.send('Still alive');
}
您需要在
if
语句之外调用next()
,如果不想继续,还需要添加一个返回,以跳出中间件的功能范围next()
基本上是说,不要停留在这个中间件上,转到下一个中间件上
app.route('/rutas').get(sum, test);
function sum (request, response, next) {
if (5>1) {
return response.status(144).end('Fin');
}
next();
};
function test (request, response) {
response.send('Still alive');
};
您没有在中间件中调用
next()
。我尝试了next()
和return next()
,但没有结果。不,您需要在if语句之外调用next,否则它无法进入中间件堆栈中的下一个函数。我理解。。。然而我需要的是。。“如果发生了什么事情,就没有机会进入下一个middlware,只需响应并结束请求”我有一个stacktrace,其中有:错误:发送后无法设置头。因为第二个中间件
app.route('/rutas').get(sum, test);
function sum (request, response, next) {
if (5>1) {
return response.status(144).end('Fin');
}
next();
};
function test (request, response) {
response.send('Still alive');
};