【问题标题】:Node.JS HTTP Response Returns Nothing?Node.JS HTTP 响应什么都不返回?
【发布时间】:2012-10-23 20:57:32
【问题描述】:

我正在尝试遍历 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();         
                    });
                });

            };

        });

【问题讨论】:

  • data 未在您发布的代码 sn-p 中初始化
  • console.log(data);查看数据中的内容
  • 当 console.log(data) 放在 cursor.each 之外时,我得到一个返回到控制台的缓冲区()虽然当它放在光标内时。每个 . html 文件返回正确。

标签: javascript node.js mongodb


【解决方案1】:

我无法弄清楚您要对未初始化的 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();         
            }
        })           
    });
});

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多