私は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