Я пытаюсь использовать API Spotify , чтобы получить список всех сохраненных треков определенного пользователя (после слов мне нужно рандомизировать 10 песен из этого списка, но яне могу добраться до этого момента).
Я новичок в Node JS и все еще пытаюсь понять концепции обратных вызовов и обещаний. Я пытаюсь использовать axios , чтобы сделать все запросы. Вот код, который у меня есть до сих пор:
let tracks = []
function getTracks(offset, access) {
const auth = {
headers: { Authorization: 'Bearer ' + access }
}
return axios.get('https://api.spotify.com/v1/me/tracks?limit=50' + (offset > 0 ? '&offset=' + offset : ''), auth) // url changes based on offset value
.then(result => {
result.data.items.forEach(element => {
tracks.push({ title: element.track.name, artist: element.track.artists });
});
return result.data.total;
})
.catch(error => {
return error;
});
}
router.get('/getsongs', function (req, res) {
const access_token = req.query.access || null; // contains access token
getTracks(0, access_token).then(data => {
const total = (data / 50) + 1;
for (let i = 1; i <= total; i++) {
getTracks(i * 50, access_token).then(moredata => {
// I'm not sure what I can put in here
// I tried 'console.log('test')' and it does print a certain amount of times based on the loop
});
}
});
res.send(tracks);
});
Идея заключается в том, чтобы сделать один первый запрос на 50 треков, а затем найти общее количество треков. После этого я зациклюсь определенное количество раз на основе общей суммы и каждый раз устанавливаю смещение, чтобы получить следующие 50 треков. Все треки добавляются в глобальный список tracks
, который я отправляю клиенту после выполнения всех запросов.
Я пробовал множество разных версий этого, и неважно, что я получу в итоге с пустым списком или только со списком первых 50 треков.
Как мне получить один список, содержащий все дорожки, которые я могу использовать позже в программе?
Спасибо!