0

MongoDB カーソル オブジェクトを反復処理し、コレクションからすべてのレコードを返してから、Node outout で応答メソッドを使用してブラウザーに出力しようとしています。

私が抱えている問題は、応答がないことです。

ループ内に response.end() を入れようとしましたが、結果を反復処理しません。

私も別の場所で response.end() を試しました。ここにコードがあります

db.open(function(err, db) {
            if(!err) {
                console.log("Nodelistr is connected to MongoDB\n");
                response.writeHead(200);

                db.collection('todo', function(err, collection){            
                    collection.find(function(err, cursor) {
                        cursor.each(function(err, doc) {
                            for(docs in doc){
                                if(docs == "_id"){
                                }else{
                                    var test = docs + " : " + doc[docs];
                                }
                            }
                            data = data.toString("utf8").replace("{{TEST}}", test);
                            response.write(data);

                            //console.dir(doc);
                        })           
                        response.end();         
                    });
                });

            };

        });
4

1 に答える 1

0

data初期化されていない変数とドキュメントを繰り返し処理するときに何をしようとしているのかわかりませんが、一般的な問題はresponse.end();、カーソルの終わりに到達するまで呼び出しを待つ必要があることです。これは、コールバックdocでnullであることによって示されます。cursor.each

コードの中央部分は、次の一般的なアプローチに従う必要があります。

db.collection('todo', function(err, collection){            
    collection.find(function(err, cursor) {
        cursor.each(function(err, doc) {
            if (doc) {
                ...  // initialize data from doc
                response.write(data);
            } else {
                // doc is null, so the cursor is exhausted
                response.end();         
            }
        })           
    });
});
于 2012-10-23T12:57:32.553 に答える