У меня есть следующий маршрут на моем сервере:
//packages
const express = require('express');
const router = express.Router();
const rp = require('request-promise');
//date logic
var today = new Date();
var d = today.getDate();
var m = today.getMonth()+1; //January is 0!
var y = today.getFullYear();
if(d<10) { d = '0'+d }
if(m<10) { m = '0'+m }
today = y + m + d;
//needs error handling
//retrieve specific ocr records
router.get('/odds/:bid', (req,res,next) => {
//sports action API connection
const actionApi = {
url: `https://api-prod.sprtactn.co/web/v1/scoreboard/${req.params.bid}?date=${today}`,
json: true
}
//home team, away team, opening odds, and closing odds API pul
rp(actionApi)
.then((data) => {
const games = data.games
games.forEach((games) => {
games.teams.forEach((teams, i) => {
if (games.home_team_id == games.teams[i].id) {
homeTeam.push({home_team: games.teams[i].full_name});
} else if (games.away_team_id == games.teams[i].id) {
awayTeam.push({away_team: games.teams[i].full_name});
}
})
games.odds.forEach((odds, i) => {
if (games.odds[i].type == "game" && games.odds[i].book_id == "15") {
currOdds.push({
currAwayLine: games.odds[i].ml_away,
currHomeLine: games.odds[i].ml_home,
currAwaySpread: games.odds[i].spread_away,
currHomeSpread: games.odds[i].spread_home,
currAwayTotal: games.odds[i].total,
currHomeTotal: games.odds[i].total,
homeMlBets: games.odds[i].ml_home_public,
awayMlBets: games.odds[i].ml_away_public,
totalOverBets: games.odds[i].total_over_public,
totalUnderBets: games.odds[i].total_under_public,
spreadHomeBets: games.odds[i].spread_home_public,
spreadAwayBets: games.odds[i].spread_away_public
})
} else if (games.odds[i].type == "game" && games.odds[i].book_id == "30") {
openOdds.push({
openAwayLine: games.odds[i].ml_away,
openHomeLine: games.odds[i].ml_home,
openAwaySpread: games.odds[i].spread_away,
openHomeSpread: games.odds[i].spread_home,
openAwayTotal: games.odds[i].total,
openHomeTotal: games.odds[i].total
})
}
})
})
for (i = 0; i < homeTeam.length; i++) {
mergRecs.push({
homeTeam: homeTeam[i].home_team,
awayTeam: awayTeam[i].away_team,
currAwayLine: currOdds[i].currAwayLine,
currHomeLine: currOdds[i].currHomeLine,
openAwayLine: openOdds[i].openAwayLine,
openHomeLine: openOdds[i].openHomeLine,
currAwaySpread: currOdds[i].currAwaySpread,
currHomeSpread: currOdds[i].currHomeSpread,
openAwaySpread: openOdds[i].openAwaySpread,
openHomeSpread: openOdds[i].openHomeSpread,
currAwayTotal: currOdds[i].currAwayTotal,
currHomeTotal: currOdds[i].currHomeTotal,
openAwayTotal: openOdds[i].openAwayTotal,
openHomeTotal: openOdds[i].openAwayTotal,
homeMlBets: currOdds[i].homeMlBets,
awayMlBets: currOdds[i].awayMlBets,
totalOverBets: currOdds[i].totalOverBets,
totalUnderBets: currOdds[i].totalUnderBets,
spreadHomeBets: currOdds[i].spreadHomeBets,
spreadAwayBets: currOdds[i].spreadAwayBets
})
}
res.send(mergRecs)
})
.catch((err) => {
console.log(err);
});
})
module.exports = router; //make router exportable
Запрос-обещание с запросом на получение вызывает внешний API. Затем запрос от внешнего API преобразуется в упрощенную полезную нагрузку. Запрос на получение, в который заключен запрос-обещание, затем возвращает эту уменьшенную полезную нагрузку. В первый раз, когда вы вызываете мой запрос на получение, он возвращает полезную нагрузку правильно, однако, как только вы запрашиваете его снова, он возвращает одну и ту же полезную нагрузку несколько раз.
Я попытался поместить простой ответ, такой как "res.send('hello world') в запрос на получение, и hello world возвращается нормальное количество раз. Но по какой-то причине полезная нагрузка моего запроса-обещания дублируется, когда она вызывается внутри запрос на получение Я не могу понять, почему это происходит.
Ниже приведен снимок экрана из журнала консоли при двукратном вызове запроса на получение:
mergRecs
в своем коде? И я не уверен, правильно ли понимаю вашу проблему, можете ли вы показать ожидаемый результат и что вы получаете? - person Marcos Casagrande   schedule 31.05.2018currOdds
- глобальный наверное? конечно похоже, что вы просто продолжаете нажимать, нажимать и нажимать на этот бедный глобальный массив - person Jaromanda X   schedule 31.05.2018mergRecs
,currOdds
,openOdds
,homeTeam
иawayTeam
- person Jaromanda X   schedule 31.05.2018