GraphQL + Relay现代片段给了我一系列空帖子

时间:2017-08-27 14:38:42

标签: javascript reactjs react-native graphql relay

我正在使用Relay modern,GraphQL和Graphcool开发React Native应用程序。我试图从数据库中获取帖子,我有3个文件,Post.js,PostList和index.js。

PostList.js:

export default createFragmentContainer(PostList, graphql`
  fragment PostList_viewer on Viewer {
    allPosts(last: 100, orderBy: createdAt_ASC) @connection(key: "PostList_allPosts", filters: []) {
      edges {
        node {
          ...Post_post
        }
      }
    }
  }
`)

Post.js

export default createFragmentContainer(Post, graphql`
  fragment Post_post on Post {
    id
    content
    createdAt
    author {
      id
      username
    }
  }
`)

index.js

const Feed = () => (
  <QueryRenderer
    environment={environment }
    query={AllPostQuery}
    render={({ error, props }) => {
      if (error) {
        return <div>{error.message}</div>
      } else if (props) {
        return <PostList viewer={props.viewer} />
      }
      return <Text>Loading</Text>
    }}
  />
)

当我在 PostList.js 中控制日志this.props.viewer.allPosts时,我得到{ edges: [ null, null, null ], ...。我在数据库中有3个帖子,所以它找到了帖子,但为什么它们是空的? PL

1 个答案:

答案 0 :(得分:-1)

首先,如果遇到问题,请尝试记录$test = $response->results[0]->id; print_r($test); 的“根”对象,而不是其中的分支 - 这将使您更容易取消数据结构。

另外,据我所知,Relay做了一些魔术,只在你定义片段的文件中为你提供数据,所以在PostList.js中你不会看到帖子的细节。尝试从Post.js打印数据。这可能就是您看到props值打印的原因。

此外,在null(下划线)之后,您可以使用源自片段名称的变量名称获取GraphQL的数据,因此在您的示例中,_不是post。< / p>