我将尝试简化此示例。
因此,我有两个表格-一个用于帖子,一个用于用户。这些表当然将通过posts.user_id和users.id链接。在我的应用程序中,我将获取一系列包含用户详细信息的帖子(如您所愿)。
export default gql`
query ArticlePosts($articleId: String!) {
articlePosts (articleId: $articleId) {
id
comment
poster {
id
username
}
}
}
`
typeDef ...
export default `
type ArticlePost {
id
comment
poster: User!
}
type User {
id: Int!
username: String!
}
type Query {
articlePosts(articleId: String!): [ArticlePost!]
}
`
我尝试了两种不同的解决方法:-
现在显然,第二种解决方法仅执行单个数据库查询,而第一种选择是执行许多查询以拉回关系数据。
有什么方法可以执行第二种方法,同时仍然确保graphQL仍可以识别两种不同的类型(ArticlePost和User)?就像让父级(ArticlePost)解析器的子级返回JOIN查询中的相应字段一样简单:-
ArticlePost: {
poster: async (parent, args, context) => {
return {id: parent.posterId, id: parent.posterUsername}
},
}
我不确定这是否是一个好习惯,是否有更干净的方法可以做到这一点,也许可以在父解析器调用本身中进行处理?我对graphQL还是很陌生,所以以前从未遇到过这种情况。
谢谢。