4

是否可以从Graphcool后端返回一个随机的 graphql 元素?如果是这样,如何做到这一点?

或者,关于如何为 Graphcool 后端创建自定义查询的任何提示?

4

1 回答 1

4

最好的方法是使用API Gateway模式。

这种方法的想法是将网关服务器放在 Graphcool 的 CRUD API 之上,从而自定义 API。使用这种方法,您将编写一个额外的解析器函数来为您检索随机元素:

const extendTypeDefs = `
  extend type Query {
    randomItem: Item
  }
`

const mergedSchemas = mergeSchemas({
  schemas: [graphcoolSchema, extendTypeDefs],
  resolvers: mergeInfo => ({
    Query: {
      randomItem: {
        resolve: () => {
          return request(endpoint, allItemsQuery).then(data => {
            const { count } = data._allItemsMeta
            const randomIndex = Math.floor((Math.random() * (count-1)) + 0)
            const { id } = data.allItems[randomIndex]
            return request(endpoint, singleItemQuery, { id }).then(data => data.Item)
          })
        },
      }
    },
  }),
})

我在这里创建了一个完整的例子。如果您有任何其他问题,请告诉我:)

于 2017-11-07T13:22:29.880 回答