Graphql 从GraphTool中获取随机元素?

Graphql 从GraphTool中获取随机元素?,graphql,graphcool,Graphql,Graphcool,是否可以从后端返回随机graphql元素?如果是的话,如何做到这一点 或者,关于如何为GraphTool后端创建自定义查询的任何提示?最好的方法是使用API网关模式 这种方法的思想是在GraphTool的CRUDAPI之上放置一个网关服务器,从而定制API。使用这种方法,您可以编写一个额外的函数来检索随机元素: const extendTypeDefs = ` extend type Query { randomItem: Item } ` const mergedSchema

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


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

最好的方法是使用API网关模式

这种方法的思想是在GraphTool的CRUDAPI之上放置一个网关服务器,从而定制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)
          })
        },
      }
    },
  }),
})

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

谢谢。在操场上尝试了不同的方法来编写可以这样做的查询,但从未取得任何进展。有没有办法让模块在react native中工作?或者这会极大地改变代码吗?继续了解graphql工具不是为React Native设计的。这段代码不应该存在于客户端,而是存在于服务器端。嘿@Michal,感谢您的反馈:)我从答案中删除了断开的链接。此外,公开该查询的GraphQL服务器可以很容易地部署到AWS Lambda或其他sls提供商,因此我确实认为它是无服务器的。谢谢您的努力:)我不是故意粗鲁的。您的答案可能是OP从GraphTool中获取随机项所能做的最好的事情。但是,纯GraphTool解决方案(没有任何服务器配置)目前是不可能的。