我正在建立一个简单的问答应用程序,将允许用户选择不同的类别,并产生一个5题测试他们的知识。在AppSync中,我有一长串通过GraphQL访问的问题设置。然而,随着这个列表的不断增长,我把这些东西拉到客户端随机选择是没有意义的。
GraphQL是否支持从查询中随机选择5?这样,服务器端,我就可以随意选择5张唱片了吗?
query listAll {
listQuestions(filter: {
topic: {
contains: "chocolate"
}
}) {
items {
question
answer
}
}
}我曾考虑过其他方法,例如随机分配每个记录的一个数字,并对其进行过滤,但每次都不会是随机的。
有什么想法吗?
发布于 2019-02-21 11:33:47
GraphQL是否支持从查询中随机选择5?
不是直接的,不是。在GraphQL中,您可能想象到在SQL查询中所做的更“有趣”的事情,甚至更简单的事情,如“只返回前10条记录”或“具有‘Jones’的姓氏”,都不受直接支持。你必须用它给你的原语来构建这类东西。
这样,服务器端,我就可以随意选择5张唱片了吗?
大多数GraphQL服务器实现都支持解析器函数,这些解析器函数是在请求字段值时调用的任意代码。您可以编写如下模式
type Query {
listQuestions(filter: QuestionFilter, random: Int): [Question!]!
}并访问解析器函数中的参数。
看起来像AppSync有自己的解析器系统。。从分页文档中可以看出,它支持“随机挑选n”方法,这一点并不明显;它似乎主要是作为数据库存储的外观设计的,而且大多数数据库都没有针对这种查询进行优化。
发布于 2019-02-21 19:28:41
David在解析器中编写这个逻辑是正确的(作为一种GraphQL方式)。
如果您使用的是AWS AppSync,您可以使用Lambda解析器并将其附加到查询中,这样您就可以编写逻辑来选择Lambda内部的随机值,因此它是GraphQL响应的一部分。这是一种方法。
https://stackoverflow.com/questions/54801439
复制相似问题