我正在使用NodeJS和mongodb向API端点发出请求。 在app.js中:
app.get('/api/matches', (req, res) =>{
//console.log('Get matches..');
matches.find({}).then(eachOne => {
res.json(eachOne);
});
});
上面的代码给出了JSON响应,见下文:
现在我希望使用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": ""
}
答案 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);
});
});