在这个 Express 应用程序(用于 Nodejs)中有next();
一行我不理解的代码。我想知道你是否可以澄清一下。
在 index.js 中,express 应用调用了一个函数 isLoggedInMiddleware。它不传递任何参数
app.use(sessionHandler.isLoggedInMiddleware);
这是那个功能。调用的时候没有传任何参数,但是设置了接受三个,next
最后一个,作为getUsername的返回值调用。
this.isLoggedInMiddleware = function(req, res, next) {
var session_id = req.cookies.session;
sessions.getUsername(session_id, function(err, username) {
"use strict";
if (!err && username) {
req.username = username;
}
return next();
});
}
这是 getUserName which next(); 作为 callbak 的一部分传递给。你能解释一下如何 next(); 被使用了?在这种情况下是什么?它在做什么?
this.getUsername = function(session_id, callback) {
"use strict";
if (!session_id) {
callback(Error("Session not set"), null);
return;
}
sessions.findOne({ '_id' : session_id }, function(err, session) {
"use strict";
if (err) return callback(err, null);
if (!session) {
callback(new Error("Session: " + session + " does not exist"), null);
return;
}
callback(null, session.username);
});
}