2015年12月28日 星期一

搞死人的express json問題

res.json()//在異步裡會 Error: Can't set headers after they are sent.
改用res.end(JSON.stringify(doc));

router.get('/find_db', function(req, res, next) {
var no = req.query.no;
M.connect(url, function(err, db) {
  assert.equal(null, err);
   var cursor = db.collection('question').find();

   cursor.each(function(err, doc) {
   if (err) { callback(err); return; }

     assert.equal(err, null);
     if (doc != null) {
        console.dir(doc);
        res.end(JSON.stringify(doc));
     
     } else {
     
     }
   });

});
});

//上述方法browser 讀取會錯誤,因為header 已經被route給寫了
//給browser用還是得寫在

app.use('/a' ,function(req,res){
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({ a: 1 }, null, 3));
})