【发布时间】:2019-12-12 20:56:58
【问题描述】:
我正在编写一个应用程序,它通过 axios 向我编写的服务器发出 GET 请求。这是我编写的可能与该问题相关的服务器代码。
app.get("/getScheduledTimes/:day/:stationId", (req, res) => {
const {stationId, day} = req.params;
db.collection(`${day}-schedules`).find({
stationInfo: {$exists: true}
}).toArray((error, result) =>{
if(error) {
console.log('Schedule Database Error: ', error)
}
let scheduledTimes;
for(let i = 0; i < result.length; i++){
if(result[i].stationInfo[stationId]){
scheduledTimes = result[i].stationInfo[stationId]
break;
}
}
scheduledTimes = sortTimeArray(scheduledTimes);
res.json({
scheduledTimes: scheduledTimes,
success: true,
})
})
})
sortTimeArray 所做的基本上是按日期对对象数组进行排序。当我查看它发送的内容时, res.data.scheduledTimes 将是一个对象数组,这是我所期望的。
当我从前端发出请求时,originTimeTable 进行其中一个调用会返回一个长度为 0 的数组,其中包含元素。但是,departTimeTable 按我的预期返回数组。
这是客户端代码:
getTimes = async () => {
// Make API calls to get the timetables for the selected stations
const {originStationId, destinationStationId} = this.state;
const responseOrigin = await axios(`http://localhost:3002/getScheduledTimes/weekday/${originStationId}`)
const originTimeTable = responseOrigin.data.scheduledTimes;
const responseDestination = await axios(`http://localhost:3002/getScheduledTimes/weekday/${destinationStationId}`)
const departTimeTable = responseDestination.data.scheduledTimes;
await this.setState({
originTimes: originTimeTable,
destinationTimes: departTimeTable,
})
}
我 console.log originTimetable 时的结果是:
originTimetable:
(28) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
length: 0
__proto__: Array(0)
我已阅读this 的答案,并且我了解originTimetable 数组尚未解决。我想知道如何让元素数组像我预期的那样解析为对象数组。
目标是我将使用originTimeTable 和departTimeTable 然后将它们转换为一个数组。任何有关如何解决此问题的指导都会很棒!
【问题讨论】:
标签: arrays reactjs mongodb express axios