2012-10-22 52 views
1

我在Node.js的一個對象數組和謹RESPONSE.WRITE();它在屏幕上,我可以設法得到的第一個對象了,但循環停止,只有第一輸出,任何人可以點我在正確的方向...迭代對象爲HTTP響應

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); 
          response.end(); 
         })      
        }); 
       }); 
+1

不久,當您調用response.end時,即完成響應。你的意思是調用response.write嗎? – Joe

回答

1

您需要更改response.end(data);response.write(data);

注意,這將異步追加到流去給用戶。

如果您打算甩掉他們一下子你也可以嘗試:

cursor.toArray(function (err, docs) { 
    /** run a for loop over each doc in docs **/ 
}) 
+0

我改變了response.end(data);到response.write(data);到Response.End(); \t雖然同樣的問題仍然存在,我想移動到Response.End()到db.open也結束,但是這導致沒有你需要的最後adync回調後,所有到Response.End被 –

+0

迴應;在db.open的結尾有可能在寫入之前觸發。 – Joe

+0

把它放在那裏,但仍然沒有迭代,看原來的帖子中的代碼(更新它) –

2

移動response.end()圈外。這應該做到這一點。