问题描述
有什么方法可以直接使用“ 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"
}
}
}
}