首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GraphQL查询中选择随机N条记录

从GraphQL查询中选择随机N条记录
EN

Stack Overflow用户
提问于 2019-02-21 07:26:59
回答 2查看 2.4K关注 0票数 2

我正在建立一个简单的问答应用程序,将允许用户选择不同的类别,并产生一个5题测试他们的知识。在AppSync中,我有一长串通过GraphQL访问的问题设置。然而,随着这个列表的不断增长,我把这些东西拉到客户端随机选择是没有意义的。

GraphQL是否支持从查询中随机选择5?这样,服务器端,我就可以随意选择5张唱片了吗?

代码语言:javascript
复制
 query listAll {
  listQuestions(filter: {
    topic: {
      contains: "chocolate"
    }
  }) {
    items {
      question
      answer
    }
  }
}

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

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-21 11:33:47

GraphQL是否支持从查询中随机选择5?

不是直接的,不是。在GraphQL中,您可能想象到在SQL查询中所做的更“有趣”的事情,甚至更简单的事情,如“只返回前10条记录”或“具有‘Jones’的姓氏”,都不受直接支持。你必须用它给你的原语来构建这类东西。

这样,服务器端,我就可以随意选择5张唱片了吗?

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

代码语言:javascript
复制
type Query {
  listQuestions(filter: QuestionFilter, random: Int): [Question!]!
}

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

看起来像AppSync有自己的解析器系统。。从分页文档中可以看出,它支持“随机挑选n”方法,这一点并不明显;它似乎主要是作为数据库存储的外观设计的,而且大多数数据库都没有针对这种查询进行优化。

票数 1
EN

Stack Overflow用户

发布于 2019-02-21 19:28:41

David在解析器中编写这个逻辑是正确的(作为一种GraphQL方式)。

如果您使用的是AWS AppSync,您可以使用Lambda解析器并将其附加到查询中,这样您就可以编写逻辑来选择Lambda内部的随机值,因此它是GraphQL响应的一部分。这是一种方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54801439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档