无法从接口片段检索字段

时间:2018-08-28 14:25:26

标签: react-apollo apollo-client

使用IntrospectionFragmentMatcher解析界面时遇到了一些问题。我已经按照文档中的步骤进行操作,但是无法查询某些Interface片段中的字段。

我正在使用react-apollo的{​​{1}} HOC来查询数据。

为了简单起见,我采用了基本的graphqlfrontpage-server

模式:

frontpage-react-app

解析器:

interface Entity {
  id: Int!
}

interface Person {
  firstName: String
  lastName: String
}

type Author implements Entity, Person {
  id: Int!
  firstName: String
  lastName: String
  # ... other fields
}

type Post implements Entity {
  id: Int!
  # ... other fields
}

还有片段匹配器(请注意,我正在使用const resolveFunctions = { Entity: { __resolveType: obj => { if (obj.author && obj.title) { return 'Post'; } // should have more logic return 'Author'; }, }, Person: { __resolveType: obj => { // should have more logic return 'Author'; }, }, // ... other resolvers };

apollo-client@1.x

然后我修改查询以通过接口片段检索字段(尽管我知道在这种情况下以这种方式编写查询没有任何意义)。例如:

new ApolloClient({
  networkInterface,
  dataIdFromObject: r => r.id,
  fragmentMatcher: new IntrospectionFragmentMatcher({
    introspectionQueryResultData: {
      __schema: {
        types: [
          {
            kind: 'INTERFACE',
            name: 'Entity',
            possibleTypes: [
              { name: 'Author' },
              { name: 'Post' },
            ],
          },
          {
            kind: 'INTERFACE',
            name: 'Person',
            possibleTypes: [
              { name: 'Author' },
            ],
          }
        ],
      },
    }
  }),
});

两个奇怪的事情在这里发生:

    对于import { graphql } from 'react-apollo'; graphql(` query allPosts { posts { ... on Entity { id } title votes author { ... on Entity { id } ... on Person { firstName lastName } } } } `); id都正确检索了
  1. 字段posts,但是authorfirstName都没有(在我的项目中,我也有此不一致)。 HOC not providing the data

  2. 对于两个都没有数据的字段,我可以看到data is properly stored in the redux store,并且如果运行query in GraphiQL可以正常运行

你们知道是什么原因造成的吗?为了正确查询接口,我还需要做些其他事情吗?

提前谢谢!

0 个答案:

没有答案