【发布时间】:2017-10-25 11:13:32
【问题描述】:
我正在学习 Node js,并且我有一个 node swagger api。我正在尝试根据 2 个输入团队检索游戏统计数据。我用这个函数查询mongodb:
function getTeamVsTeamRecord(req, res) {
var team1 = req.swagger.params.team1.value;
var team2 = req.swagger.params.team2.value;
stats.find({
game: /2016/,
$or:[
{'data.home.abbr': team1, 'data.away.abbr': team2},
{'data.away.abbr': team1, 'data.home.abbr': team2}
]}).toArray(function(err, results){
if (err) {
console.error(err);
res.status(500).json({error: 'error.code', message: 'An error happened in the server !'})
}
if (typeof results !== 'undefined' && results.length > 0) {
console.log("search returned: " + results.length + " results");
console.log(results);
res.json(results);
}
else {
res.status(500).json({error: 'error 1', message: 'search returned nothing'})
}
});
}
结果对象的输出如下所示:
[ { _id: 59ea18c21fff646c417b078c,
game: '2016100201',
data:
{ home: [Object],
away: [Object],
drives: [Object],
scrsummary: [Object],
weather: null,
media: null,
yl: '',
qtr: 'Final',
note: null,
down: 0,
togo: 0,
redzone: true,
clock: '00:34',
posteam: 'ATL',
stadium: null },
nextupdate: 246 },
{ _id: 59ea18c61fff646c417b0bac,
game: '2016122401',
data:
{ home: [Object],
away: [Object],
drives: [Object],
scrsummary: [Object],
weather: null,
media: null,
yl: '',
qtr: 'Final',
note: null,
down: 0,
togo: 0,
redzone: true,
clock: '00:44',
posteam: 'CAR',
stadium: null },
nextupdate: 318 } ]
如您所见,我在此查询中检索了 2 组游戏统计信息。我的问题是模式验证失败,因为 swagger 需要 json 语法。我尝试了 JSON.stringify,这导致了错误的数组错误。我可以发送成功
res.json = results[0].data
作为响应,但这仅在数组中有 1 个项目时有效。有没有办法将整个数组作为 json 响应发送?
【问题讨论】:
标签: arrays json node.js mongodb swagger