【发布时间】:2018-06-20 14:33:56
【问题描述】:
我们使用 apollo-client 和 apollo-server-express 从一个简单的翻译 API 获取数据。
这是当前架构:
type Query {
translations(language: String!, key: String!): Translation!
}
type Translation {
key: String!
value: String!
}
还有解析器:
export default {
Query: {
translations (obj, args, context, info) {
return fetchApi('/api/v1/translation', {
method: 'POST',
body: JSON.stringify(args)
})
}
}
}
在前端应用程序中,我们有一个 React 组件,它在 props 中接收翻译键,然后针对 GraphQL 服务器执行查询:
const translationQuery = gql`
query GetTranslations($language: String!, $key: String!) {
translations(language: $language, key: $key) {
value
key
}
}`
现在这会导致 GraphQL 调用每个翻译。我们需要的是累积所有翻译,然后执行 ONE GraphQL 查询。基本上我们希望使用一个接受键列表但仍使用专用翻译组件的查询:
type Query {
translations(language: String!, keys: [String!]!): Translation!
}
type Translation {
key: String!
value: String!
}
有没有办法实现我们所需要的?
以下是翻译组件在前端应用程序中的实现方式的简化版本: https://codesandbox.io/s/81n874zjp0
【问题讨论】:
标签: typescript graphql react-apollo apollo-client apollo-server