我正在實施會話身份驗證的restify中間件。該函數包含嵌套的異步數據庫調用:db.sessions.findOne()的回調中的db.sessions.remove()。Node.js/Mongojs嵌套數據庫回調返回
'return'語句令我感到困惑,因爲我不確定是否將回調函數的next()或next(err)返回給verifyUserSession(),還是僅從verifyUserSessions返回?我做對了嗎?
function verifyUserSession(req, res, next) {
if (req.headers.sessionKey)
{
db.sessions.findOne(req.headers.sessionKey, function(err, session) {
if (err)
{
return next(err);
}
if (!session)
{
return next(new Error({'message': 'Session does not exist'}));
}
if ((new Date().getTime() - session.timestamp.getTime())/86400000 > 60)
{
db.sessions.remove({sessionKey: req.headers.sessionKey}, function(err){
if (err)
{
return next(err);
}
return next(new Error({'message': 'Session expired'}));
});
}
else
{
// session ok
}
});
}
}