2017-08-27 23 views
0

我正在开发一个使用Relay modern,GraphQL和Graphcool的React Native应用程序。我试图从数据库中获取帖子,并且我有3个文件,Post.js,PostList和index.js。GraphQL +中继现代片段给了我一个空帖子阵列

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> 
    }} 
    /> 
) 

当我控制台登录this.props.viewer.allPostsPostList.js我得到{ edges: [ null, null, null ], ...。我在数据库中有3个帖子,所以它找到帖子,但他们为什么是空的? Pl

回答

-1

首先,如果遇到问题,尝试记录“根”对象,即props而不是其内部的分支 - 这将使您更容易取消数据结构。

另外,据我所知,Relay只是在您定义了一个片段的文件中为您提供数据,因此在PostList.js中,您不会看到该帖子的详细信息。尝试从Post.js打印数据。这可能是你看到null值打印的原因。

同样来自GraphQL的数据将在_(下划线)之后根据从片段名称派生的变量名称为您提供,因此在您的示例中,它将是post而不是allPosts

+0

我知道所有这些,都不是我的问题。另外,'allPosts'没有错,它是我从Graphcool得到的对象的一部分,我得到的对象是'viewer:{allPosts:{edges:node {...}}}'。没有任何工作为我,甚至没有使用'后'。我的问题最终被认证。 – corasan