使用.toArray查询不会返回任何结果以查看

使用.toArray查询不会返回任何结果以查看

问题描述:

尝试返回新闻的所有“标题”。它没有返回任何前端。有什么问题?使用.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获得价值? –

我想你混淆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/)。 –

下面的解决方案尝试,并通过参数体,

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 –

你应该改变/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); 
      }); 
     } 
    }); 
});