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();,直到您到达光标的末尾。这通过doccursor.each回调中为 null 来表示。

代码的中间部分应遵循以下通用方法:

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 回答