使用NodeJS无法获取特定字段的JSON?

时间:2018-01-21 09:12:52

标签: javascript json node.js mongodb

我正在使用NodeJS和mongodb向API端点发出请求。 在app.js中:

app.get('/api/matches', (req, res) =>{

    //console.log('Get matches..');
    matches.find({}).then(eachOne => {

        res.json(eachOne);

    });

});

上面的代码给出了JSON响应,见下文:

enter image description here

现在我希望使用app.get()方法获取特定匹配的JSON响应,但每当我使用下面的代码时,它总是返回id:1的JSON数据,用于不同的URL,例如{{1} }或http://localhost:5000/api/matches/3

http://localhost:5000/api/matches/6

以上两个URL提供相同的JSON数据,但它们应该提供不同的JSON数据。

app.get('/api/matches/:match_id', (req, res) =>{

    let match = req.params.id;

    matches.findOne({match_id: match}).then(m =>{

        res.json(m);
    });

});

在matches.js< --- Model

{
  "_id": "5a63051735aaddd30d1d89cc",
  "id": 1,
  "season": 2008,
  "city": "Bangalore",
  "team1": "Kolkata Knight Riders",
  "team2": "Royal Challengers Bangalore",
  "toss_winner": "Royal Challengers Bangalore",
  "toss_decision": "field",
  "result": "normal",
  "dl_applied": 0,
  "winner": "Kolkata Knight Riders",
  "win_by_runs": 140,
  "win_by_wickets": 0,
  "player_of_match": "BB McCullum",
  "venue": "M Chinnaswamy Stadium",
  "umpire1": "Asad Rauf",
  "umpire2": "RE Koertzen",
  "umpire3": ""
}

4 个答案:

答案 0 :(得分:1)

我终于解决了这里的问题是代码: 在架构中,id的字段名称为match_id。 架构match_id中的字段与文档中的id相同。您还需要使用parseInt(match),因为URL是字符串,需要转换为类型:Number

app.get('/api/matches/:match_id', (req, res) =>{
    let match = req.params.match_id;
    matches.findOne({id: parseInt(match)}).then(m =>{
        res.json(m);
    });
});

答案 1 :(得分:0)

您的findOne应该是

matches.findOne({ id : match }).then(m =>{ ... } //match id to be matched

答案 2 :(得分:0)

我认为您在使用' match_id'进行查询时遇到问题而不是' _id',我在你的收藏中没有看到它。

答案 3 :(得分:0)

你可以尝试这个...只给两个字段city和team1

app.get('/api/matches', (req, res) =>{

        //console.log('Get matches..');
        matches.find({},{ city: 1, team1: 1 }).then(eachOne => {

            res.json(eachOne);

        });

    });