Graphql 盖茨比&x27;s标记文件之间的映射

Graphql 盖茨比&x27;s标记文件之间的映射,graphql,gatsby,gatsby-plugin-mdx,Graphql,Gatsby,Gatsby Plugin Mdx,我正在创建一个多作者站点(使用gatsby plugin mdx)并具有以下文件结构: /posts - /post-1/index.mdx - /post-2/index.mdx - ... /members - /member-a/index.mdx - /member-b/index.mdx - ... 在post页面的前面,我有一系列作者,比如 authors: [Member A, Member B] 我把作者的名字放在作者降价文件的前面 我想设置模式,这样当我查询帖子时,我也可以

我正在创建一个多作者站点(使用
gatsby plugin mdx
)并具有以下文件结构:

/posts
- /post-1/index.mdx
- /post-2/index.mdx
- ...
/members
- /member-a/index.mdx
- /member-b/index.mdx
- ...
post
页面的前面,我有一系列作者,比如

authors: [Member A, Member B]
我把作者的名字放在作者降价文件的前面

我想设置模式,这样当我查询帖子时,我也可以获得作者的详细信息(姓名、电子邮件等)

从阅读它似乎我需要创建一个自定义解析器。。。但我看到的所有示例都将所有作者放在一个
json
文件中(因此您有两个集合,
MarkdownRemark
AuthorJson
)。而我认为我的所有帖子和成员都在
MarkdownRemark
集合中


非常感谢!

我最终做了类似的事情。当然有一种更干净的方法,但它对我有效。它会遍历所有
Mdx
,并向所有
Mdx
类型添加一个名为
authors
的字段

一个问题是,在
成员
下还有
作者
,这并不理想。更好的方法是定义新类型,并将最后一个解析器中的
Mdx
更改为新的post数据类型。但不确定如何使其工作。最后,我可以查询如下内容:

query MyQuery {
  posts {
    frontmatter {
      title
      subtitle
    }
    authors {
      frontmatter {
        name
        email
      }
    }
  }
}
exports.createResolvers=({createResolvers})=>{
常量解析程序={
Mdx:{
作者:{
类型:[“Mdx”],
解析(源、参数、上下文、信息){
返回context.nodeModel.runQuery({
查询:{
过滤器:{
字段:{
集合:{eq:“成员”}
},
前沿问题:{
memberid:{in:source.frontmatter.authors},
},
},
},
类型:“Mdx”,
firstOnly:错,
})
}
}
},
}
CreateResolver(解析程序)
}

这是文档中关于映射外键字段的部分:@LekoArts谢谢。我认为我对文档的理解不够,无法让它为我工作:P(获取类似于
GraphQLError的内容:“[Mdx]”类型的字段“authors”必须有一系列子字段。你的意思是“authors{…}”?
)最后我做了一些不理想但有效的事情。我很想听听你的想法。