Разбивка комбинированных результатов объединения - PullRequest
0 голосов
/ 17 июня 2019

Я все еще немного новичок в графике и Аполлоне.Но мне любопытно, если бы я создал поисковый запрос, который возвращает объединение двух типов, как бы я изменил объединенные результаты этого объединения.Используя пример Apollo Docs ( Союзы и интерфейс ):

union Result = Book | Author

  type Book {
    title: String
  }

  type Author {
    name: String
  }

  type Query {
    search: [Result]
  }
const resolvers = {
  Result: {
    __resolveType(obj, context, info){
      if(obj.name){
        return 'Author';
      }

      if(obj.title){
        return 'Book';
      }

      return null;
    },
  },
  Query: {
    search: () => { ... }
  },
};

const server = new ApolloServer({
  typeDefs,
  resolvers,
});

server.listen().then(({ url }) => {
  console.log(`? Server ready at ${url}`)
});

После завершения работы резольверов Book и Author, скажем, у меня 200 результатов, 50 книг и 150 авторов.,Если бы я хотел ограничить их до 100 из них, отсортированных по алфавиту, как бы я получил доступ к разрешенному массиву, прежде чем вернуть его клиенту?Определения типа сервера Apollo имеют интерфейс IResolverOptions с функцией разрешения, но если я добавлю это в свой преобразователь результатов, то получится сообщение об ошибке, говорящее о том, что Result.resolve определен в преобразователе, но не в схеме.

...