SilverStripe GraphQL - ошибка при запросе типов с потомками - PullRequest
0 голосов
/ 07 ноября 2018

Я получаю эту ошибку при попытке запроса типа и потомка:

"Fragment cannot be spread here as objects of type \"AppTestObject\" can never be of type \"AppTestChild\"."

Я установил тестовую установку, используя recipe-core, admin, graphql и graphql-devtools (все последние версии), чтобы протестировать это в базовой настройке. Я создал 2 объекта:

class TestObject extends DataObject {

    private static $singular_name = "Test Object";
    private static $plural_name = "Test Objects";
    private static $table_name = "TestObject";

    private static $db = [
        'Title' => 'Varchar(255)'
    ];

}

class TestChild extends DataObject {

    private static $singular_name = "Test Child";
    private static $plural_name = "Test Children";
    private static $table_name = "TestChild";

    private static $db = [
        'Title' => 'Varchar(255)'
    ];

}

И настройте простые леса через конфигурацию:

SilverStripe\GraphQL\Controller:
  schema:
    scaffolding:
      types:

        App\TestObject:
          fields: [ID]
          operations:
            read: true

        App\TestChild:
          fields: [ID, Title]
          operations:
            read: true

Я могу запросить каждый из этих типов по отдельности без каких-либо проблем. Но когда я пытаюсь получить TestChild в качестве потомка TestObject, я получаю ошибку выше. Вот пример моего запроса:

query {
  readAppTestObjects {
    edges {
      node {
        ...on AppTestChild {
          Title
        }
      }
    }
  }
}

Проверяя документацию для схемы в graphiql, в readAppTestObjects нет ссылок на потомков, хотя в документации для silverstripe / graphql говорится:

При чтении типов, которые имеют открытых потомков (например, чтение страницы, когда RedirectorPage также отображается), возвращаемый тип представляет собой объединение базового типа и всех открытых потомков. Этот тип объединения принимает имя {BaseType} WithDescendants.

1 Ответ

0 голосов
/ 07 ноября 2018

Да, это ошибка в модуле silverStripe graphql. То, что вы делаете, должно работать.

Я полагаю, что исправление в полете на https://github.com/silverstripe/silverstripe-graphql/pull/176,, вы можете следить за ходом там. Возможно, попробуйте патч и оставьте несколько комментариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...