2016-06-16 3 views
2

У меня так:Циклическая GraphQL Схема не работает

//driverType.js 
module.exports = new GraphQLObjectType({ 
    name: 'Driver', 
    fields:() => ({ 
    homeTerminal: { 
     type: TerminalType, 
     resolve: resolver(User.HomeTerminal) 
    } 
    }) 
}); 

и это:

//terminalType.js 
module.exports = new GraphQLObjectType({ 
    name: 'Terminal', 
    fields:() => ({ 
    drivers: { 
     type: new GraphQLList(DriverType), 
     resolve: resolver(Terminal.Drivers) 
    } 
    }) 
}); 

Я получаю ошибку:

Error: Schema must contain unique named types but contains multiple types named "Driver".

я нашел некоторые должности, которые говорят, что упаковка поля в функциональном блоке решат его, но, как вы можете видеть, я сделал это, и это не имело никакого значения.

Тонкая циклическая ссылка должна поддерживаться, да? Мы можем позволить клиенту указать желаемую глубину.

Что я делаю неправильно?

Как обходной путь, я мог удалить homeTerminal из DriverType и сгладить его примитивными полями, но это довольно неэлегантно.

+0

Это не имеет ничего общего с циклами, но без остальной части кода схемы невозможно определить, в чем проблема. Похоже, что вы каким-то образом добавляете тип драйвера дважды, или вы скопировали тип определения, но забыли что-то менять «имя». – helfer

+0

Если я удаляю '' 'drivers''' из' '' TerminalType '' ', ошибка исчезает. Если я удалю '' 'homeTerminal''' из' '' 'DriverType'', он не исчезнет. Полагаю, это ключ. –

+0

Определенно существует только один '' 'GraphQLObjectType''' с именем« Driver ». –

ответ

0

Я нашел проблему. В terminalType.js у меня было:

import DriverType from './DriverType';

Должно быть:

import DriverType from './driverType';

Нижний регистр "d" является правильным.

UPDATE

Вот что я думаю, что происходит. Nodejs кэширует импорт. Таким образом, импорт одного и того же файла несколько раз возвращает один и тот же экземпляр. Тем не менее, я считаю, что, хотя import is не с учетом регистра кеширования is. Поэтому вызов с другим случаем в имени файла возвращает новый и другой экземпляр.

+0

Вы не объяснили, как ваше решение в ответ связано или решает проблему/ошибку в вопросе. Можете ли вы уточнить, пожалуйста? –

+0

@Ahmad Ferdous - см. Обновление в ответ –

+1

@TimScott: Это звучит как ошибка в узле, которая должна быть исправлена! – helfer

 Смежные вопросы

  • Нет связанных вопросов^_^