是否有任何GraphQL查询来从轨道启动测站?

问题描述

有什么方法可以直接使用“ trackID”启动“ Station”?现在,我必须使用“搜索查询搜索Station Factory。使用搜索查询的第一个结果,我将返回的结果设置为“源”。这就是我作为电台播放曲目的方式。谢谢。

解决方法

正如您所说,您可以搜索轨道并以这种方式获得车站的工厂。例如,以下查询:

query {
  search(query:"Let Me by Zayn",types:[SF],pagination: {limit: 1}) {
    items {
      ... on StationFactory {
        name
        id
      }
    }
  }
}

返回此结果:

{
  "data": {
    "search": {
      "items": [
        {
          "name": "Let Me","id": "SF:21586:35686886"
        }
      ]
    }
  }
}

通过在types:[SF]参数中包含search,结果仅限于“车站工厂”。电台工厂(请参阅docs中的“电台和电台工厂”)可以开始播放电台(请参见setSource here上的信息)。

类似但略有不同的路径是搜索轨道(请注意,我们现在指定的是types:[TR]而不是types:[SF]

query {
  search(query:"Let Me by Zayn",types:[TR],pagination: {limit: 1}) {
    items {
      ... on Track {
        name
        artist {
          name
        }
        stationFactory {
          id
        }
      }
    }
  }
}

哪个返回:

{
  "data": {
    "search": {
      "items": [
        {
          "name": "Let Me","artist": {
            "name": "ZAYN"
          },"stationFactory": {
            "id": "SF:21586:35686886"
          }
        }
      ]
    }
  }
}

使用types:[TR]时需要考虑一个警告/边缘情况。具体来说, some 轨道将没有stationFactory ID。绝大多数轨道将具有stationFactory ID,因此这不是主要限制因素,但在此处进行空检查很重要。

最后,如果您已经知道轨道ID,则可以使用便捷的entity查询来查找该轨道的所有关联元数据。在这里,我们提取站的工厂ID:

query {
  entity(id: "TR:35686886") {
    ... on Track {
      stationFactory {
        id
      }
    }
  }
}

哪个返回:

{
  "data": {
    "entity": {
      "stationFactory": {
        "id": "SF:21586:35686886"
      }
    }
  }
}