我正在使用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
答案 0 :(得分:-1)
首先,如果遇到问题,请尝试记录$test = $response->results[0]->id;
print_r($test);
的“根”对象,而不是其中的分支 - 这将使您更容易取消数据结构。
另外,据我所知,Relay做了一些魔术,只在你定义片段的文件中为你提供数据,所以在PostList.js中你不会看到帖子的细节。尝试从Post.js打印数据。这可能就是您看到props
值打印的原因。
此外,在null
(下划线)之后,您可以使用源自片段名称的变量名称获取GraphQL的数据,因此在您的示例中,_
不是post
。< / p>