2017-05-25 5 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.queryreq.paramsを混乱していると思います。 リクエストの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

^^私の質問が更新されました。 =) – edu

+0

上記のメソッドも使用できますが、bodyのパラメータを渡してコードを少し変更します。 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); 
      }); 
     } 
    }); 
}); 
関連する問題