0

mongoDb データベースと通信する必要がある node.js プロジェクトに取り組んでいます。現在、node-mongodb-native モジュールを使用して、データベース内のデータを検索する関数をプログラミングしています。すべてが機能しますが、コードはコールバック内のコールバック内のコールバック内のコールバックのように見えます...

データベースにアクセスするたびにコールバックを使用しないようにするために、この関数を作成しました。私は今、この関数を呼び出す必要があります。

module.exports.find = function(query, projection, callback){
    db.open(function(err, db){
        if(err) throw err;
        db.collection('rooms', function(err, collection){
            if(err) throw err;
            collection.find(query, projection, function(err, cursor){
                if (err) throw err;
                cursor.toArray(function(err, find){
                    db.close();
                    callback(err, find);
                });
            });
        });
    });
};

このコード受信を減らす方法はありますか?

4

2 に答える 2

2

コールバックを合理的にクリーンアップし、db のスコープを設定する方法を知りたいだけの場合:

module.exports.find = function(query, projection, callback){
    var local_db;

    function db_open(err, db) {
        if(err) throw err;
        local_db = db;
        local_db.collection('rooms', handle_homes_collection);

    }

    function handle_homes_collection(err, collection){
        if(err) throw err;
        collection.find(query, projection, handle_find_query);
    }

    function handle_find_query(err, cursor){
        if (err) throw err;
        cursor.toArray(function(err, find){
            local_db.close();
            callback(err, find);
        });
    }

    db.open(db_open);
};
于 2013-06-27T01:48:45.027 に答える