我很難找出石墨烯Django應該與react-router-relay一起使用的方式。比方說,我可以在我的Django的服務器上通過GraphiQL控制檯使用以下GraphQL查詢精:石墨烯Django和反應路由器繼電器
query {
allThreads {
edges {
node {
id
}
}
}
}
這大概是石墨烯的替代品使用,因爲繼電器不支持根查詢連接的commmon viewer
包裝。所以我明白allThreads實際上是一個節點(類型爲ThreadNodeConnection),並且有一個可以查詢的邊連接。
麻煩是我無法弄清楚如何使用這個繼電器,特別是react-router-relay。我上有一個片段是這樣的(其他地方一個子線程組件)一個陣營的觀點:
fragments: {
store:() => Relay.QL`
fragment on Query {
allThreads (first:300) {
edges {
node {
// child's fragment included here
}
},
}
}
`,
},
的WebPack檢查這對我的生活模式和喜歡它。然後,我創建我的index.js以下的路由器:
const ViewerQueries = {
store:() => Relay.QL`query { allThreads(first:300) }`
};
ReactDOM.render(
<Router
forceFetch
environment={Relay.Store}
render={applyRouterMiddleware(useRelay)}
history={browserHistory}
>
<Route path='/' component={ThreadList} queries={ViewerQueries} />
</Router>
, document.getElementById('container')
)
已經我感覺有點不確定,因爲我想我在做ViewerQueries錯,但很難知道,因爲每個人都使用它來適應他們的viewer
封裝在他們的GraphQL連接上,但Graphene在每個連接上有不同的包裝,所以這可能只適用於我的單一路由,但現在沒關係。 Webpack再次贊同它的模式。但是,當我加載頁面時,我得到一個「錯誤的請求」和錯誤:
「片段F1不能在這裏廣泛傳播, 型ThreadNodeConnection的對象永遠不能查詢類型」
說實話,這就是我無法繼續下去的地方,因爲我顯然不瞭解Graphene Django如何構造模式,或者應該如何編寫GraphQL片段,或者如何編寫Route查詢。麻煩的是,我無法弄清楚哪些是錯誤的,在使用這些特定技術組合的人身上似乎沒有任何資源。
爲了完整起見,我的石墨烯Django的架構設置是(略有簡化):
項目/線程/ schema.py:
class ThreadNode(DjangoObjectType):
class Meta:
model = Thread
interfaces = (relay.Node,)
...
class Query(graphene.AbstractType):
all_threads = DjangoFilterConnectionField(ThreadNode)
thread = relay.Node.Field(ThreadNode, id=graphene.Int())
def resolve_all_threads(self, args, context, info):
return Thread.objects.select_related('author__profile').all()
def resolve_thread(self, args, context, info):
id = args.get('id')
if id is not None:
return Thread.objects.get(pk=id)
return None
項目/ schema.py:
class Query(project.threads.schema.Query, graphene.ObjectType):
pass
schema = graphene.Schema(query=Query)
如果有人曾經使用過這種特殊的組合,並有任何建議,那將是驚人的。
這不是關於石墨烯。你所要做的就是使用連接字段作爲根字段。這在Relay 1中不被支持,但應該在Relay 2中。完整的解釋在這裏:https://github.com/facebook/relay/issues/112 –
我不認爲這是真的,我在這個問題中提到。石墨烯通過環繞所有連接避開了連接問題,因此連接變成了一個具有可用邊連接的節點。 –
我注意到查詢中的「fragment」行。您是否嘗試過使用ThreadNodeConnection的片段? –