-1
我正在學習nodejs,express和mongoose。我想出了一個關於用於從數據庫檢索文檔的findOne函數的問題。 通常情況下,你會使用這樣的:貓鼬回調函數錯誤
Product.findOne({_id: req.params.id},function(error, result){
res.send(result);
});
但是,當我試圖做到以下幾點,它失敗(我這樣做只是學習的緣故):
Product.findOne({_id: req.params.id}, returnFunction(res));
function returnFunction(res,error, result){
//error and result are provided by the findOne callback function
return function(){
res.send(result); //doesnt work
};
}
但是,如果我通過參數的內部函數,它完美的作品:
Product.findOne({_id: req.params.id}, returnFunction(res));
function returnFunction(res,error, result){
//error and result are provided by the findOne callback function
return function(res,result){
res.send(result);
};
}
是不是應該有訪問外部變量函數的內部函數?
謝謝。
是的,但是你只傳遞'res',所以'error'和'result'是未定義的。 – JJJ
但不是錯誤和結果隱含在函數中?因爲正如我所說的,即使我沒有傳遞這些變量,最後的代碼也能很好地工作。 –
它們隱含在你返回的函數*中,而不是你自己調用的函數。 – JJJ