Страпы - Как расширить схему типа GraphQl с пользовательским свойством? - PullRequest
0 голосов
/ 02 ноября 2019

Допустим, у меня есть свойства ' firstName ' и ' lastName ' в схеме типа Author, созданной как тип контента Strapi.

Я могу запросить их с помощью graphql, но что если я захочу запросить свойство ' fullName ', не добавляя это поле в мой тип контента?

Поскольку поле не существует, теперь оно говорит: Невозможно запросить поле \ "fullName \" для типа \ "Author \" .

Как расширить существующееТип схемы с этим дополнительным "виртуальным" полем?

1 Ответ

1 голос
/ 02 ноября 2019

Мне удалось сделать это с помощью следующего кода в файле schema.graphql , расположенном в папке api / author / config :

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), чтобы избежать ошибки дублирующегося типа.

Кроме того, чтобы задать тип: {Author: false}, чтобы исходный тип не был запрашиваемым.

Теперь внутри моей функции распознавателя Author.find (помещенной в мой контроллер Author.js) я могу отобразить значение fullName.

Если у кого-то есть более подходящее решение для расширения схемы graphql в Страпине стесняйтесь размещать его.

...