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

时间:2017-05-25 04:48:42

标签: node.js mongodb express mongoose

尝试返回新闻的所有“标题”。它没有返回任何前端。有什么问题?

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);
          });
      }
    });
});

更新

好的,它不会返回任何值。这就是它在数据库中的样子:

{
    "_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错了吗?新闻采集 - >从集合内部找到所有“标题”并将其返回查看。

3 个答案:

答案 0 :(得分:3)

我认为你将req.paramsreq.query混为一谈。 如果您的请求网址格式为 -

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

然后req.query.title将提供title的值。

否则,如果是形式 -

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

然后req.params.title将提供title的值。

答案 1 :(得分:0)

尝试使用以下解决方案并在body中传递参数

    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" });
    }
  });
});

答案 2 :(得分:0)

您应该将 / api / v1 / news 更改为 / api / v1 / news /:title

corpus = [
            {'text': 'what is chat service?', 'category': 'what_is_chat_service'},
            {'text': 'what is the benefit of using chat service?', 'category': 'why_use_chat_service'}
        ]