【问题标题】:Spotify web API results "undefined"Spotify Web API 结果“未定义”
【发布时间】:2019-11-12 21:12:30
【问题描述】:

我正在尝试使用 Spotify Web API 获取播放列表/专辑/歌曲。我可以将这些东西输出到控制台,但如果我只想得到名字,我会得到undefined

我正在尝试使用 返回 data.body.tracks.name

这不起作用,但我可以使用

searchSpotify(req, res) {
spotifyApi.searchTracks(req.body.search).then(
  function(data) {
    // var testPage = data.body.tracks.items;
    console.log('Search by user input', data.body.tracks.items);
    res.redirect("/search");
  },
  function(err) {
    console.error(err);
    }
  );
},

这会返回一些信息,如您所见,它还返回一个名称,我如何才能访问该名称作为我在查询中返回的唯一内容?

【问题讨论】:

  • 数据是JSON格式的吗?如果是这样,请尝试 console.log(json.stringify(data.body.tracks.items))
  • 你的图片显示服务器给你一个 401 响应错误,这意味着你没有通过身份验证。您是否已请求您的 API 密钥来使用它?它不是公共 API。
  • 您好,是的,数据是 JSON 格式,我尝试了您的建议,但它在某些值上返回难以辨认的混乱,而在其他值上又返回“未定义”。

标签: javascript node.js spotify


【解决方案1】:

data.body.tracks.items 返回一个数组,name 嵌套在 array 内部,然后嵌套在album 对象内部,因此您必须像这样深入研究

let name = data.body.tracks.items[0].album.name

如果您有多个Items,您可能需要遍历它,以便获取每个名称

【讨论】:

    【解决方案2】:

    问题在于items 是一个对象数组,每个对象都有一个name 字段。

    试试这个:

    searchSpotify(req, res) {
    spotifyApi.searchTracks(req.body.search).then(
      function(data) {
        // var testPage = data.body.tracks.items;
        console.log('Search by user input', data.body.tracks.items);
        const items = data.body.tracks.items
        const names = items.forEach(item => console.log(item.name))
        res.redirect("/search");
      },
      function(err) {
        console.error(err);
      }
    );
    

    您应该看到它在新行上打印每个项目的name

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 2017-11-09
      • 2015-04-21
      • 2015-01-10
      • 2021-04-26
      • 2018-05-21
      相关资源
      最近更新 更多