Запрос GraphQL: хотите вернуть объект из преобразователя вместо массива - PullRequest
0 голосов
/ 28 мая 2020

в моем API GraphQL у меня есть следующий преобразователь, который возвращает массив элементов SearchItem. Но я хочу, чтобы он возвращал объект с ключевыми «результатами», которые будут включать тот же массив, который был возвращен ранее. Мне он нужен, потому что мне нужно вернуть еще несколько значений после запроса.

Вот преобразователь, как он выглядит сейчас:

export const SearchResolver = {
  Query: {
    async indexSearch(_: null, {
      collection,
      hitsPerPage,
      query = '',
      filters = undefined,
      page = 0
    }) {
      const index: SearchIndex = client.initIndex(collection);

      return await tryCatchWithApolloErrorAsync(async () => {
        const searchResults = index.search(query, {
          page: page,
          hitsPerPage: hitsPerPage,
          filters: filters
        })

        return (await searchResults).hits as unknown as SearchItem[]
      })
    }
  },
  Mutation: {},
  ItemType: {
    __resolveType(obj) {
      if(obj.objectID && obj.category){
        return 'Previews';
      }
    }
  }
}

Но я хочу переписать запрос примерно так:

return await tryCatchWithApolloErrorAsync(async () => {
        const searchResults = index.search(query, {
          page: page,
          hitsPerPage: hitsPerPage,
          filters: filters
        })

        const result = {
          total: (await searchResults).total,
          hits: (await searchResults).hits as SearchItem[]
        }


        return result
      })

Возможно ли? И если да, то как мне изменить __resolveType, чтобы он работал правильно?

...