我正在构建一个将在后端使用GraphQL并在前端使用Apollo客户端的应用程序。我将使用Relay-style connection types,因为它将允许我们将元数据放在关系上。
但是,我们不希望我们的react组件必须处理连接增加的额外复杂性。出于传统原因,并且因为它看起来更干净,我希望我的react组件不必处理nodes
和edges
。我更喜欢绕行:
代码段1 :
const ticket = {
title: 'My bug'
authors: [{ login: 'user1', login: 'user2' }]
}
而不是
代码段2 :
const ticket = {
title: 'My bug'
authors: {
nodes: [{
login: 'user1',
login: 'user2',
}]
}
}
在打字稿中,我真的没有看到自己定义一种票证类型,该票证类型将包含节点和元数据,例如nextPage
,lastPage
等...
我正在尝试提出一个抽象,也许是在apollo客户端级别上,它允许我自动将Snippet 2转换为Snippet 1,同时在我确实需要这些元数据时仍允许访问Snippet 1。
这个问题被别人解决了吗?您对可能的解决方案有什么建议吗?我是朝错误的方向前进吗?
答案 0 :(得分:1)
您可以尝试在架构中公开其他字段,而不是尝试解决此客户端问题。您可以使用official SWAPI example来完成此操作:
query {
allFilms {
# edges
edges {
node {
...FilmFields
}
}
# nodes exposed directly
films {
...FilmFields
}
}
}
这样,您可以根据需要查询具有或不具有连接的节点,而不必在客户端进行复杂的操作。