Можно ли отправлять данные типов Dynami c в GraphQL или изменять существующую схему? - PullRequest
0 голосов
/ 20 февраля 2020

Я использую пользовательские поля Keystone JS 'для создания раскрывающегося списка, который заполняется данными в API. Создание настраиваемого поля работает нормально, но когда я пытаюсь сохранить данные на сервере (то есть, когда я позволяю Keystone JS сохранять данные на сервере через API GraphQL), я получаю

[GraphQL error]: Message: Variable "$data" got invalid value "another" at "data.sploof"; Expected type TodoSploofType., Location: [object Object], Path: undefined

Я довольно новичок в GraphQL, но я считаю, что проблема заключается в том, что данные, которые я передаю, another в поле sploof, отсутствуют в схеме.
enter image description here

Вместо этого у него есть pending и processed, которые приходят, когда я настраивал Keystone JS - здесь вы видите, что поле sploof имеет пользовательский тип MySelect с schemaDoc содержащий options:

keystone.createList('Todo', {
    schemaDoc: 'A list of things which need to be done',
    fields: {
        name: {type: Text, schemaDoc: 'This is the thing you need to do'},
        blip: {type: Text, schemaDoc: 'This is another thing'},
        status: {type: Select, options: 'pending, processed'},
        sploof: {type: MySelect, options: 'pending, processed'},

    },
});

В общем, есть ли способ изменить схемы GraphQL после их создания? То есть, если я хочу отправить данные, форма которых будет определена во время выполнения?

1 Ответ

1 голос
/ 25 февраля 2020

Keystone Select имеет определенный тип, вы не можете отправить динамическое значение c для этого.

Если вы хотите, чтобы в поле был добавлен новый элемент, вы можете создать поле типа RelationShip и добавить новый элемент случайным образом, но это может работать не всегда хорошо из-за сохранения только mon go id ref objedct. .

Я вижу, что вы пишете настраиваемое поле, если вы можете загрузить свое настраиваемое поле из списка и позволить пользователю выбрать (базовый тип по-прежнему текстовый), чтобы вы могли затем использовать Dynami * 1010. * вариант есть. Вы также можете создать настраиваемое поле для перечисления значений для поля из того же списка. вид шрифта, основанный на существующих значениях

для создания рабочего кода у меня может уйти время.

...