graphql - Strapi - 如何使用自定义属性扩展 graphql 类型模式?
问题描述
假设我在创建为 Strapi 内容类型的 Author 类型架构上有“ firstName ”和“ lastName ”属性。
我可以使用 graphql 查询它们,但是如果我想查询“ fullName ”属性而不在我的内容类型上添加该字段怎么办?
由于字段不存在,现在它说:Cannot query field \"fullName\" on type \"Author\"。
如何使用附加的“虚拟”字段扩展现有类型模式?
解决方案
我设法使用位于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'
}
}
}
};
关键是在使用不同类型名称(AuthorOverride)的同时使用附加字段定义模式以避免重复类型错误。
此外,设置 type: { Author: false } 以便原始类型不可查询。
现在,在我的解析器函数“Author.find”(放置在我的 Author.js 控制器中)中,我可以映射 fullName 值。
如果有人有更合适的解决方案来在 Strapi 中扩展 graphql 模式,请随时发布。
推荐阅读
- python - How can I change the data type to run the program faster?
- reactjs - How to use react to implement google Place's Searches, to create markers on the map?
- javascript - Sweetalert Validation null control
- android - 显示和字体较大时手动计算可用宽度不正确
- python - 向量的 Keras 二进制精度
- c# - 重定向子进程的标准输出时命名管道性能不佳
- javascript - 我如何(并且应该)在 React.js 中调度点击事件
- c++ - 如何有效地收集给定数组中的重复元素?
- reactjs - 如何使用 redux saga 从 api 获取中获取特定字段
- javascript - 如何在 vuetify 中单击按钮导航到另一个页面?