我真的很难用我下面的数据构建一个REST api,一切都在客户端工作正常,但是当我需要发出更新players
的POST请求时,我无法弄清楚如何查询mongodb。
路线
router.get('/api/teams/:teamid/player/:playerid', player.getById);
mongodb查询
module.exports = {
getById: function(req, res) {
models.Team.findOne({"players.player_name":"Jokim"}, function(err, player) {
if (err) {
res.json({error: 'player not found.'});
} else {
console.log(player);
res.json(player);
}
});
}
};
Json数据
[
{
"__v":0,
"_id":"5362dcf7e99615aa392d7d72",
"assists":80,
"blocks":14,
"feed":null,
"fouls":20,
"made_one":10,
"made_three":5,
"made_two":15,
"missed_one":4,
"missed_three":4,
"missed_two":20,
"percentage":50,
"points":44,
"rebounds":100,
"steals":33,
"team_name":"Bulls",
"players":[
{
"player_name":"Jokim",
"_id":"5365f079ed4914600d9342c7",
"team_name":"",
"team_id":"",
"points":0,
"made_one":0,
"made_two":0,
"made_three":0,
"missed_one":0,
"missed_two":0,
"missed_three":0,
"percentage":0,
"assists":0,
"rebounds":0,
"steals":0,
"blocks":0,
"fouls":0,
"feed":""
},
{
"player_name":"Taj",
"_id":"5365f079ed4914600d9342c6",
"team_name":"",
"team_id":"",
"points":0,
"made_one":0,
"made_two":0,
"made_three":0,
"missed_one":0,
"missed_two":0,
"missed_three":0,
"percentage":0,
"assists":0,
"rebounds":0,
"steals":0,
"blocks":0,
"fouls":0,
"feed":""
}
]
},
{
"team_name":"Wizards",
"points":44,
"made_one":10,
"made_two":15,
"made_three":5,
"missed_one":4,
"missed_two":20,
"missed_three":4,
"percentage":50,
"assists":80,
"rebounds":100,
"steals":33,
"blocks":14,
"fouls":20,
"feed":null,
"_id":"5362dcf7e99615aa392d7d75",
"__v":0,
"players":[
{
"player_name":"John Wall",
"points":22,
"made_one":3,
"made_two":4,
"made_three":5,
"missed_one":2,
"missed_two":3,
"missed_three":4,
"percentage":5,
"assists":2,
"rebounds":2,
"steals":2,
"blocks":5,
"fouls":3,
"feed":null,
"facebook_id":null,
"_id":"5362dcf7e99615aa392d7d77"
},
{
"player_name":"Bradley Beal",
"points":22,
"made_one":3,
"made_two":4,
"made_three":5,
"missed_one":2,
"missed_two":3,
"missed_three":4,
"percentage":5,
"assists":2,
"rebounds":2,
"steals":2,
"blocks":5,
"fouls":3,
"feed":null,
"facebook_id":null,
"_id":"5362dcf7e99615aa392d7d76"
}
]
}
]
答案 0 :(得分:2)
当您尝试在玩家阵列中搜索时,我认为您将不得不使用elemMatch:
请查找与此相关的文档:http://docs.mongodb.org/manual/reference/operator/projection/elemMatch/
PS:我没有尝试过这个,因为我的系统上没有带有Mongo的NodeJS。
答案 1 :(得分:-2)
通常人们使用PUT
方法来更新模型
检查mongodb文档中的update方法。
<强>路线强>
router.put('/api/teams/:teamid/player/:playerid', player.updatePlayer);
<强>控制器强>
module.exports = {
updatePlayer: function(req, res) {
models.Team.update({"players.player_name":"Jokim"}, {$set: {assist: 100}}, function(err, player) {
if (err) {
res.json({error: err});
} else {
console.log(player);
res.json(player);
}
});
}
};