これは純粋なベストプラクティスの質問です。私はNodeとMongooseにかなり慣れていません。私はこのテクノロジーが大好きで、自分が構築しているアプリ用のJSONベースのAPIを構築するプロジェクトに取り組んできました。
データベースからオブジェクトをフェッチするときに、コードを継続的に繰り返していることがわかりました。例えば:
Playlist.findById(req.params.id, function(err,playlist){
if (err)
return res.json({error: "Error fetching playlist"});
else if (!playlist)
return res.json({error: "Error finding the playlist"});
//Actual code being performed on the playlist that I'm fetching
});
関数呼び出しの先頭でのエラー処理は、データベースへの呼び出しごとにそのコードを繰り返さなければならないので面倒です...またはそう思います。
私は次のようなコールバックを使用することを考えました:
var fetchCallback = function(err,objOrDoc,callback){
//Handle the error messages
callback(objOrDoc);
};
ただし、フェッチを実行する前にコールバック関数を定義する必要があるため、このアプローチではシーケンシャルフローが台無しになります。したがって、多くのデータベースクエリをチェーン化した場合、コールバックを逆の順序で配置する必要があります。これは、クリーンコーディングの観点からは理想的とはほど遠いものです。
誰かがこの問題に遭遇し、繰り返しを減らすためのベストプラクティスを持っているかどうか疑問に思います。
私もExpressフレームワークを使用しているので、Expressでそれを処理するための便利な方法があれば、私も知りたいと思います。