react-native - 从 GraphQL 查询中选择随机 N 条记录

标签 react-native graphql aws-appsync aws-amplify

我正在构建一个简单的测验应用程序,它允许用户选择各种类别并生成 5 个问题的测验来测试他们的知识。我在 AppSync 中设置了一长串问题,可通过 GraphQL 访问。然而,随着该列表不断增长,我将这些拉到客户端并在那里随机选择是没有意义的。

GraphQL 是否支持从查询中选择随机 5?这样,在服务器端,我可以随机选择 5 条记录?

 query listAll {
  listQuestions(filter: {
    topic: {
      contains: "chocolate"
    }
  }) {
    items {
      question
      answer
    }
  }
}

我考虑过其他方法,例如随机为每个记录分配一个编号并对此进行过滤,但这不会每次都是随机的。

有什么想法吗?

最佳答案

Does GraphQL support choosing random 5 from a query?

不直接,不。您可能想象在 SQL 查询中执行的大多数更“有趣”的操作,甚至是更简单的操作(例如“仅返回前 10 条记录”或“具有“Jones”姓氏”),在 GraphQL 中均不直接支持。您必须根据它提供给您的原语来构建这种东西。

Such that, serverside, I can select just 5 records at random?

大多数 GraphQL 服务器实现都支持解析器函数,这些函数是在请求字段值时调用的任意代码。您可以编写类似的架构

type Query {
  listQuestions(filter: QuestionFilter, random: Int): [Question!]!
}

并访问解析器函数中的参数。

看起来像AppSync has its own resolver system 。通过翻阅文档,我并不清楚它支持“随机选择n”方法;它似乎主要被设计为围绕数据库存储的外观,并且大多数数据库并未针对这种查询进行优化。

关于react-native - 从 GraphQL 查询中选择随机 N 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801439/

相关文章:

javascript - 如何使用 StackNavigator 将数据从一个屏幕内的列表传递到下一个屏幕

android - 如何在 react-native 中获取子组件的引用?

react-native - 如何添加焦点、亮度和缩放控件以响应原生相机?

graphql - 错误: Response not successful: Received status code 400"Graphql

amazon-web-services - 无法从Elasticsearch序列化AWSDate

react-native - 如何在 Apk 中添加 Google 广告

reactjs - 无法在呈现 nextjs apollo 应用程序的服务器中的组件中获取更新的缓存

graphql - 为什么 GraphQL 片段在查询中需要 __typename?

graphql - AWS AppSync GraphQL : DynamoDB ConditionalCheckFailedException when updating object in mutation

amazon-web-services - 发布 AWS Amplify GraphQL 突变时如何避免在数组中创建重复项