Пустой объект с типом объединения в graphQL - PullRequest
0 голосов
/ 27 мая 2019

Когда я использую тип объединения в своей схеме graphQL, я обычно использую его следующим образом:

const documentTypeDefs = gql`
 union TestType = TypeExample1 | TypeExample2

 type Document {
   exampleKey: TestType
 }
`

Затем я разрешаю его следующим образом:

  TestType: {
    __resolveType(obj) {
     if(obj.property1) {
       return 'TypeExample1';
     }

     if(obj.property2) {
       return 'TypeExample2';
     }

    return null;
  },
}

Но иногда яполучение пустого объекта в моей разрешающей функции (т.е. obj - это {}).Я думал, что возвращение null или undefined сделает работу, но, к сожалению, я получаю ошибку:

"Abstract type ItemsType must resolve to an Object type at runtime for field Document.exampleKey with value {}, received \"{}\". Either the ItemsType type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function."

Как я могу тогда разрешить пустой объект?Спасибо!

1 Ответ

0 голосов
/ 27 мая 2019

Если пустой объект передается в __resolveType, это означает, что ваше поле преобразуется в пустой объект. Это означает, что либо значение, возвращаемое внутри вашего преобразователя, является пустым объектом, либо возвращаемое обещание разрешается в один.

Если вы работаете с полем, которое возвращает List, возможно, что только один из возвращаемых элементов будет пустым объектом. Это особенно вероятно при работе с MongoDB, если один из документов, которые вы получаете, фактически пуст или, по крайней мере, пропускает поля, указанные в вашей mongoose схеме.

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