我是新手,我想知道如何在没有通配符(*) (https://github.com/graphql/graphql-spec/issues/127)的情况下探索GraphQL。
我目前正在用GraphQL建立一个无头Craft CMS,我真的不知道我的数据是如何嵌套的。
事件,我没有机会获得所有的数据,因为我必须设置所有的端点,因此我还必须知道所有的字段名。
那么,我该如何轻松地探索我的CraftCMS数据结构呢?
谢谢你在这方面的任何提示。
干杯
商业
-编辑-如果我使用@simonpedro的建议:
{
__schema {
types {
name
kind
fields {
name
}
}
}
}我可以看到很多类型(?)/fields (?)...例如,我看到:
{
"name": "FlexibleContentTeaser",
"kind": "OBJECT",
"fields": [
{
"name": "id"
},
{
"name": "enabled"
},
{
"name": "teaserTitle"
},
{
"name": "text"
},
{
"name": "teaserLink"
},
{
"name": "teaserLinkConnection"
}
]但现在我想知道teaserLink是如何构造的。不知何故,我发现teaserLink (它是一个类型为Entries的字段,我可以在其中链接到另一个页面)具有url & title属性。
但是,我该如何设置查询来探索teaserLink中的可用属性呢
我尝试了各种查询,但我总是遇到这样的消息:

我真的很高兴,如果有人能给我另一个指针,我可以找到哪些属性,我实际上可以查询…
谢谢
发布于 2019-07-23 07:53:46
据我所知,目前还没有具有该功能的graphql实现。然而,如果你想要做的是探索“数据结构”,即模式,你应该使用模式实例检查,这是为此而考虑的(探索graphql模式)。例如,一个简单的graphql实例检查查询将如下所示:
{
__schema {
types {
name
kind
fields {
name
}
}
}
}参考资料:- https://graphql.org/learn/introspection/
更新以进行编辑:
我认为你想做的事情是这样的:
{
__schema {
types {
name
kind
fields {
name
type {
fields {
name
}
}
}
}
}
}然后找到愿望类型字段以从中获取更多信息(字段)。类似这样的东西(我不知道这是否有效,只是一个想法):
const typeFlexibleContentTeaser = data.__schema.types.find(t => t === "FlexibleContentTeaser")
const teaserLinkField = typeFlexibleContentTeaser.fields.find(f => f.name === "teaserLink")
const teaserLinkField = teaserLinkField.type.fields;也就是说,您必须递归地遍历type字段。
https://stackoverflow.com/questions/57154385
复制相似问题