我一直在观看SailsJS教程,对于一些用户身份验证我看到该函数已应用,但我没有得到next();
的具体功能
答案 0 :(得分:4)
接下来的目的是继续处理请求 - 这允许中间件等工作。
这是一个例子。
想象一下,你有一个简单的Express.js应用程序,如下所示:
var app = express();
app.get('/', function(req, res) {
res.send('hi!');
});
app.get('/dashboard', function(req, res) {
res.send('there!');
});
以上应用程序有2条路线,每条路线都有特定的功能。
现在,如果我们想要创建一个特殊的函数,在执行每个请求之前将hello world打印到控制台,该怎么办?要做到这一点,我们需要修改上面的两个路由,或者像这样创建一个中间件:
var app = express();
app.use(function(req, res, next) {
console.log('hello, world!');
next(); // continue processing
});
app.get('/', function(req, res) {
res.send('hi!');
});
app.get('/dashboard', function(req, res) {
res.send('there!');
});
现在,发生的情况是,对于每个请求,我们在上面定义的函数将被调用到任何路由代码之前,并且一旦它调用next()
,这意味着我们将运行我们的路线代码。
漂亮,对吧?
在基本级别,next
对象只是要执行的“下一个函数”,所以当你说next()
时,你告诉express要继续处理用户请求。 / p>