プロジェクトの API を書いていますが、最近、テクノロジ スタックを Node.js と MongoDB に移行しました。ただし、Node と Mongo に関連するいくつかの側面を解決できませんでした。
悪名高い Node Beginner チュートリアルをチェックして、Node のコーディングを開始しました。そこでは、ノンブロッキングロジックに従うことが強く言及されています。それは、関数が終了するのを待たずに先に進み、後で「魔法のように」先に進んだ関数の結果を取得することを正しく理解した場合です。
しかし、私が混乱したことが 1 つあります。非ブロッキングが Node.js の本質である場合、データベースにクエリを実行するときにそれに従う必要があります。接続の結果を成功またはエラーとして保証して返す必要があるためです。 . 私が持っているコードは、 tl;dr の; についてよりよく説明します。(ちなみに、mongoDB ODM としてMongooseを使用しています。
db.on('error', function(err){
if(err)
console.log("There is an error");
response.write("Terrible Error!");
response.end();
});
「db.on()」エラーコードの後にdb接続が成功した場合の対処方法を書きましたが、よく考えてみるとエラーが発生するので「function(err)」に書いたほうがいいと思います。操作を直接キャンセルし、応答を終了します。しかし、それは Node.js のノンブロッキング ロジックに反するのでしょうか?