0

プロジェクトの 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 のノンブロッキング ロジックに反するのでしょうか?

4

1 に答える 1

0

コールバックのコードをどこに配置するかという質問の本質は何ですか? 推奨されるパターンは、 docsで説明されている種類のパターンを使用することです。これにより、ドキュメント ロジックがコールバック内にラップされ、操作のブロックが回避されます。

于 2012-10-03T16:02:02.930 に答える