Узел GraphQL Relay Интерфейс

Я пытаюсь объединить 2 схемы, которые реализуют свои собственные определения nodeDefinitions. В одной схеме используется globalId, например:

const UserType = new GraphQLObjectType({
  name: 'User',
  interfaces: () => [nodeInterface],

  fields: () => ({
    id: globalIdField('User'),
...

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

const Node = new GraphQLInterfaceType({
    name: 'Node',
    description: 'Generic Node to fetch single parts of the graph.', 
    fields: {
        id: { type: new GraphQLNonNull(entries.types.ariseId) }
    },

Ошибка

{
 "errors": [
{
  "message": "Interface field Node.id expects type ID! but Property.id 
   is type ariseId!.\n\nInterface field Node.id expects type ID! but 
   SpaceType.id is type ariseId!.\n\nInterface field Node.id expects 
   type ID! but Availability.id is type ariseId!.\n\nInterface field 
   Node.id expects type ID! but RatePlan.id is type 
   ariseId!.\n\nInterface field Node.id expects type ID! but 
   Traveler.id is type ariseId!.\n\nInterface field Node.id expects 
   type ID! but Partner.id is type ariseId!.\n\nInterface field 
   Node.id expects type ID! but Reservation.id is type ariseId!."
     }
   ]
  }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
197
1

Ответы 1

Спецификация сервера ретрансляции говорит, что тип Node должен быть точно

interface Node {
  id: ID!
}

так что, вероятно, ваш второй фрагмент неверен (или, по крайней мере, не соответствует спецификации).

Как уже было сказано, тип идентификатора может иметь представление любого строкового или числового значения, поэтому, вероятно, просто изменить ваш второй фрагмент, чтобы использовать простой ID. Это верно как для определения интерфейса Node, так и для самого поля id.

Другие вопросы по теме