我正在构建一个简单的测验应用程序,该应用程序将允许用户选择各种类别并生成5个问题测验以测试他们的知识。我在AppSync中可以通过GraphQl访问appsync的一系列问题。但是,随着该列表的不断增长,将其拉到客户并随机选择的情况下,这是没有意义的。
GraphQl是否支持从查询中选择随机5?因此,Serveride,我只能随机选择5个记录?
query listAll {
listQuestions(filter: {
topic: {
contains: "chocolate"
}
}) {
items {
question
answer
}
}
}
我已经考虑过其他方法,例如随机分配每个记录一个数字并在此上进行过滤,但这并非每次都是随机的。
有什么想法?
GraphQl是否支持从查询中选择随机5?
不是直接,否。您可能想象在SQL查询中做的大多数"有趣"的事情,甚至更简单的事情,例如"仅返回前10个记录"或"具有'Jones'的姓氏",在GraphQL中不直接支持。您必须从它给您的原始内容中构建这种东西。
这样,我可以随机选择5个记录?
大多数GraphQl Server实现支持解析器函数,它们是任意代码时,请求字段值。您可以写一个
的架构type Query {
listQuestions(filter: QuestionFilter, random: Int): [Question!]!
}
并访问解析器函数中的参数。
看起来Appsync具有自己的解析系统。从分页到文档,它支持"随机选择 n "方法对我来说并不明显。它似乎主要设计为数据库存储周围的立面,并且大多数数据库均未针对此类查询进行优化。
David在解析器中写下此逻辑(作为GraphQl方式)是正确的。
如果您使用的是AWS AppSync,则可以使用lambda解析器并将其连接到查询中,因此您可以编写逻辑以在lambda内部选择随机值,以便它是GraphQl响应的一部分。这是这样做的一种方法。