react-native - 从 GraphQL 查询中选择随机 N 条记录
问题描述
我正在构建一个简单的测验应用程序,它允许用户选择各种类别并生成一个 5 个问题的测验来测试他们的知识。我有一长串在 AppSync 中设置的问题,可通过 GraphQL 访问。但是,随着该列表不断增长,我将它们拉到客户端并在那里随机选择是没有意义的。
GraphQL 是否支持从查询中选择随机 5?这样,服务器端,我只能随机选择 5 条记录?
query listAll {
listQuestions(filter: {
topic: {
contains: "chocolate"
}
}) {
items {
question
answer
}
}
}
我曾考虑过其他方法,例如为每条记录随机分配一个数字并对此进行过滤,但这不会每次都是随机的。
有任何想法吗?
解决方案
GraphQL 是否支持从查询中选择随机 5?
不直接,不。GraphQL 不直接支持您可能想象在 SQL 查询中执行的大多数更“有趣”的事情,甚至更简单的事情,例如“仅返回前 10 条记录”或“姓氏为 'Jones'”。你必须用它给你的原语来构建这种东西。
这样,服务器端,我只能随机选择 5 条记录?
大多数 GraphQL 服务器实现都支持解析器函数,它们是在请求字段值时调用的任意代码。你可以写一个像
type Query {
listQuestions(filter: QuestionFilter, random: Int): [Question!]!
}
并访问解析器函数中的参数。
看起来AppSync 有自己的解析器系统。通过翻阅文档,我发现它支持“随机选择n ”方法并不明显;它似乎主要被设计为围绕数据库存储的外观,并且大多数数据库都没有针对这种查询进行优化。
推荐阅读
- javascript - 如何将脚本连接到 ReactJS 组件?
- python - 如何将数据帧的所有数字列乘以一维数组?
- node.js - 在 Promise 解决之前 Mocha 测试失败
- r - 在 R-Studio 中使用 gstat 进行时空插值 - 拟合正确的变异函数
- javascript - 字符串到日期对象js
- c - fseek/ftell 的 C 问题:似乎返回到 txt 文件中的错误位置
- c# - TcpClient.NoDelay 会影响已经写入的数据吗?
- oracle - 无法在 Oracle 列中搜索拼写错误的单词
- python-3.x - 努力理解使用散列函数的粗编码代码
- apexcharts - 在哪里可以找到默认工具提示的 Apexcharts html?