2017-05-25 169 views
3

嘗試返回新聞的所有「標題」。它沒有返回任何前端。有什麼問題?使用.toArray查詢不會返回任何結果以查看

var table = []; 

router.get('/api/v1/news', function (req, res) { 

    var title = req.params.title; 

    News.find({title: title}).toArray(function (err, news) { 

     if (err) { 
      res.send('error'); 
     } else if (news.length > 0){ 

      //table.push(news); 
      News.on('row', function (row) { 
       table.push(row); 
      }); 

      // After all data is returned, close connection and return results 
      News.on('end', function() { 
       done(); 
       return res.json(table); 
      }); 
     } 
    }); 
}); 

UPDATE:

好了,它不返回任何值。這是它在數據庫中的外觀:

{ 
    "_id": { 
     "$oid": "592142b13257303488922eb2" 
    }, 
    "date": "21-05-2017", 
    "text": "noniin", 
    "title": "moi", 
    "__v": 0 
}, 

{ 
    "_id": { 
     "$oid": "59217776697b07245cc7d87f" 
    }, 
    "date": "21-05-2017", 
    "text": "hgggg", 
    "title": "thghfg", 
    "__v": 0 
} 

集合名稱是新聞。我可以在不指定查詢「標題」的情況下獲取所有數據,但無需任何數據。

我理解req.params錯了嗎?新聞收藏 - >從收藏集中找到所有'標題'並將它們返回到視圖中。

+0

你在標題= req.params.title獲得價值? –

回答

3

我想你混淆req.paramsreq.query。 如果您的請求URL的形式是 -

http://host/api/v1/news?title=something 

然後標題的值將在req.query.title可用。

否則,如果它的形式 -

http://host/api/v1/news/:title 

然後標題的值將req.params.title可用。

+0

謝謝。你能舉個例子,我怎麼做「打電話」來接收所有的新聞「標題」?(我不想得到任何其他信息;「文本」,「日期」等) – edu

+0

然後指定哪一個在你的查詢中需要這樣的參數 - 'News.find({title:title},{title:1})''。更多信息[這裏](https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/)。 –

0

下面的解決方案嘗試,並通過參數體,

router.get('/api/v1/news', function (req, res) { 
    var title = req.body.title; 
    return News.find({title : title},function (err, title) { 
    if (!err) { 
     return res.json({ status: 200, message: "success", data: title}); 
    } 
    else { 
     return res.json({ status: 500, message: "failure" }); 
    } 
    }); 
}); 
+0

^^更新了我的問題,thx事先! =) – edu

+0

你也可以使用上面的方法,但是在體內傳參數並在代碼中做小改動。將req.params.title替換爲req.body.title –

0

你應該改變/API/V1 /新聞/API/V1 /新聞/:標題

var table = []; 

router.get('/api/v1/news/:title', function(req, res) { 

    var title = req.params.title; 

    News.find({ 
     title: title 
    }).toArray(function(err, news) { 

     if (err) { 
      res.send('error'); 
     } else if (news.length > 0) { 

      News.on('row', function(row) { 
       table.push(row); 
      }); 

      News.on('end', function() { 
       done(); 
       return res.json(table); 
      }); 
     } 
    }); 
});