2017-02-14 8 views
0

У меня возникла проблема с попыткой написать полевой преобразователь, когда родительский источник поступает из разных источников и разных форм.Отображение разрешения GraphQL

Например, предположим, я иметь следующую схему:

type Person 
    id : Number 
    fullname : String 

type Story: 
    title : String 
    author : Person 

Query: 
    getPersonById(id: Number) : Person  # makes db call. 
    getStoryById(id: Number) : Story  # gets the story somehow. 

Теперь проблема с автором распознаватель рассказа, значение возвращается в:

{ id: 1, first_name: "Jack" last_name: "Hugh" } 

в то время как getPersonById возвращает:

{ id: 1, firstName: "Jack", lastName: "Hugh" } 

и теперь я не могу написать рабочий преобразователь для полного имени Person как th Имя поля e в источнике различно.

Что вы посоветуете?

Заранее благодарен!

ответ

0

Если у вас есть данные, поступающие из разных источников, я иду с приближением их нормализации, как только получаю их, я сохраняю свои функции распознавателя относительно простыми.

Вы можете легко написать функцию распознавания, которая проверяет, какова форма данных и делает правильную вещь соответственно, но лучше, если данные уже находятся в правильной форме.

Мой процесс, как правило:

DB/Service Query -> Transform/Normalize Data -> GraphQL type (with custom resolvers only for expensive fields)