Spotify API获得艺术家

时间:2020-02-20 15:51:55

标签: node.js spotify

我正在尝试从过去的20年中选拔顶尖的艺术家。多年来,我通过将当前迭代作为动态值传递到Spotify端点来进行循环。这里的代码“ x”是艺术家的数组。我需要所有艺术家位于一个阵列中,但是我正在不同阵列中获得每次迭代的响应。 (检查图片以获得输出)。我该如何解决?

const fetch = require("node-fetch")
let { userAccessToken } = require('./spotifyConfig')

async function getArtists() {
        try {
    for (let i = 2000; i < 2020; i++) {
            let data = await fetch(`https://api.spotify.com/v1/search?q=year%3A${i}&type=artist&market=US`, {
                method: "GET",
                headers: {
                    Authorization: `Bearer ${userAccessToken}`
                }
            })
            let actualData = await data.json()
            var allItems = actualData.artists.items
           var x = allItems.map(item => {
                var everyOne = item.name
                return everyOne
            })
           console.log(x)
        } 
    } catch (e) { console.log (e) }
}



getArtists()

here is the output

2 个答案:

答案 0 :(得分:0)

输入在每个迭代中都是不同的,因此从逻辑上讲它可以正确获得不同的响应,这是在谈论响应结构吗?

答案 1 :(得分:0)

我认为问题是您没有在循环之外捕获数据,因此每次迭代时都会重置值。您需要声明一个结果数组以存储每次迭代,并在最后将其返回。

const fetch = require("node-fetch")
let { userAccessToken } = require('./spotifyConfig')

async function getArtists() {
    const result = []
        try {
            for (let i = 2000; i < 2020; i++) {
                    let data = await fetch(`https://api.spotify.com/v1/search?q=year%3A${i}&type=artist&market=US`, {
                        method: "GET",
                        headers: {
                            Authorization: `Bearer ${userAccessToken}`
                        }
                    })
                    let actualData = await data.json()
                    var allItems = actualData.artists.items
                var x = allItems.map(item => {
                        var everyOne = item.name
                        return everyOne
                    })
            result.push(x)
            } 
            return result.flat()
        } catch (e) { console.log (e) }
}
getArtists()