2013-04-05 69 views
1
的NodeJS進出口

使用express.js創建的node.js REST服務器,鄰這項工作的一部分,我也創建一個簡單的會話系統。我有3個模塊:將功能傳遞給下一個功能,根據情況進行啓動。

  • app.js
  • highscoreMan.js
  • userSession.js

http://localhost/api/highscores的app.js網址現在給出的參數調用userSession:

//Get all highscores 
app.get('/api/highscores', function (req, res) { 
    userSession.checkValidity(req.query['username'], req.query['sessionid'], highscoreMan.getAll(req, res)); 
}); 

然而,在checkValidity我傳遞函數被自動調用:

function checkValidity(username, sessionId, callback) { 
    userSession.findOne({ userid: username, sessionid: sessionId }, function (err, result) { 
     if (err) { 
      console.log(err); 
     } 
     if(result) { 
      callback; 
     } 
    }); 
} 

我只想運行函數傳遞給我從數據庫中獲取正確的結果(其他檢查將在以後的會議日期等附加)。我將如何做到這一點?

回答

2

要延遲調用highscoreMan.getAll(),你需要使它的另一function聲明,可以調用

app.get('/api/highscores', function (req, res) { 
    userSession.checkValidity(req.query['username'], req.query['sessionid'], function() { 
    highscoreMan.getAll(req, res); 
    }); 
}); 

否則,它被立即調用其return值而是傳遞給userSession.checkValidity()

請注意,您還需要調整checkValidity調用傳遞callback:感謝您

// ... 
if(result) { 
    callback(); 
} 
// ... 
+0

這出色的作品,! – nenne 2013-04-06 07:51:03

0

除非我不完全理解你的問題,不能你只是做這樣的事?

if (result && some_validator(result)) { 
    callback(); 
} 
相關問題