UPDATE:
Источником моей проблемы было то, что я присваивал значения своему массиву по их uuid. так что викторина [uuid] = х. Следовательно, длина массива равна 0, и свойство, очевидно, не обрабатывается в ответе json.
Я создаю функцию, в которой я инициализирую тест объекта и изменяю его в цикле for. Когда я закончу, я хочу выполнить обещание. Когда я вызываю эту функцию, я получаю только инициализированные значения и мне не хватает изменений из цикла for. console.log (викторина) регистрирует объект с изменениями.
Я не могу найти свою ошибку ...
Я пытался использовать некоторые условия if, чтобы вызывать функцию разрешения только после завершения цикла for. Это привело либо к тому же результату, либо к отсутствию ответа.
app.get('/playQuiz', function (req, res) {
playQuiz().then(data => {
res.status(200).json({
quiz: data
});
});
});
async function playQuiz(){
var players = {
puuids: [],
stats: []
}
credentials = await getCredentials();
token = credentials.token;
port = credentials.port;
players.puuids = await getLobby(port, token);
for(i=0; i<players.puuids.length; i++){
players.stats[i] = await getStats(port, token, players.puuids[i])
}
let quiz = await evaluateQuiz(players)
console.log(quiz); // This displays the object quiz with the changes from the loop
return quiz; //The response i get displayed in Postman from this line, does not show the changes in i.e. csScore. It only shows an empty array.
}
function evaluateQuiz(players){
return new Promise((resolve, reject) => {
var quiz = [{
questionId: 1,
question: "Who has the most cs per game?",
csScore: []
},
{
questionId: 2,
question: "Who has the highest vision score per game?",
vsScore: []
},
{
questionId: 3,
question: "Who has the best win rate?",
winRate: []
},
{
questionId: 4,
question: "Who has the most quadra kills?",
quadraKills: []
},
{
questionId: 5,
question: "Who has the highest objective participation?",
objectiveRate: []
}
]
for(var i=0; i<players.puuids.length; i++){
quiz[0].csScore[players.puuids[i]] = players.stats[i].csScore / players.stats[i].gamePlayed;
quiz[1].vsScore[players.puuids[i]] = players.stats[i].visionScore / players.stats[i].gamePlayed;
quiz[2].winRate[players.puuids[i]] = players.stats[i].victory / players.stats[i].gamePlayed;
quiz[3].quadraKills[players.puuids[i]] = players.stats[i].quadraKills / players.stats[i].gamePlayed;
quiz[4].objectiveRate[players.puuids[i]] = players.stats[i].objectiveTakenInvolved / players.stats[i].gamePlayed;
}
//console.log(quiz);
resolve(quiz);
})
};