我的流星/反应/阿波罗(带提升)项目有问题。当我从服务器查询数据时,它会将 __typename 添加到查询中的每个对象和子对象中,但在我的情况下,它会产生一个主要问题,因为我通常会重用这些数据以将它们发送到其他突变。现在另一个突变告诉我有一个错误,因为 __typename 字段未在我的 graphql 模式中定义。
我试图通过将 addTypename: false 字段添加到我的 apollo 客户端来修复,但它没有改变任何东西(注意我正在使用 apollo boost,这可能是它无法正常工作的原因):
const client = new ApolloClient({
uri: Meteor.absoluteUrl('graphql'),
addTypename: false,
request: operation =>
operation.setContext(() => ({
headers: {
authorization: Accounts._storedLoginToken()
}
}))
})
此外,即使它有效,它似乎也不是很优化。在我看来,在查询结果中添加了一个字段,我很惊讶没有在网上找到任何明确的解决方案。一些建议的解决方案:
- 在客户端手动过滤
- 将中间件添加到 apollo
- 将 __typename 字段添加到我的所有模式中......
但它们似乎都不适合阿波罗计划带来的“简单”查询。我希望提供一个更简单、更合乎逻辑的解决方案,但到目前为止,找不到任何解决方案。