Strapi - 如何使用自定义属性扩展 graphql 类型架构?

SiS*_*arp 2 graphql strapi

假设我在创建为 Strapi 内容类型的 Author 类型架构上有“ firstName ”和“ lastName ”属性。

我可以使用 graphql 查询它们,但是如果我想查询“ fullName ”属性而不在我的内容类型上添加该字段怎么办?

由于字段不存在,现在它说:无法在类型 \"Author\" 上查询字段 \"fullName\"

如何使用附加的“虚拟”字段扩展现有类型架构?

SiS*_*arp 6

我设法使用放置在api/author/config文件夹中的schema.graphql文件中的以下代码来完成它:

module.exports = {
  definition: `type AuthorOverride {
  firstName: String
  lastName: String
  fullName: String
}`,
  query: `
    authors: [AuthorOverride]
  `,
  type: {
    Author: false
  },
  resolver: {
    Query: {
      authors: {
        description: 'Return the authors',
        resolver: 'Author.find'
      }
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

关键是在使用不同类型名称(AuthorOverride)的同时定义具有附加字段的模式以避免重复类型错误。

此外,设置 type: { Author: false } 以便原始类型不会被查询。

现在,在我的解析器函数“Author.find”(放置在我的 Author.js 控制器中)中,我可以映射 fullName 值。

如果有人有更合适的解决方案来在 Strapi 中扩展 graphql 模式,请随时发布。