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

React native 从GraphQL查询中随机选择N条记录,react-native,graphql,aws-appsync,aws-amplify,React Native,Graphql,Aws Appsync,Aws Amplify,我正在构建一个简单的测验应用程序,允许用户选择各种类别,并生成一个5个问题的测验来测试他们的知识。我在AppSync中设置了一长串问题,可以通过GraphQL访问。然而,随着这个列表的不断增长,我把它们拉到客户端并在那里随机选择是没有意义的 GraphQL支持从查询中选择random 5吗?这样,在服务器端,我可以随机选择5条记录 query listAll { listQuestions(filter: { topic: { contains: "chocolate"

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

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

 query listAll {
  listQuestions(filter: {
    topic: {
      contains: "chocolate"
    }
  }) {
    items {
      question
      answer
    }
  }
}
我曾经考虑过其他方法,比如随机给每个记录分配一个数字,并对其进行过滤,但每次都不是随机的

有什么想法吗

GraphQL支持从查询中选择random 5吗

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

这样,在服务器端,我可以随机选择5条记录

 query listAll {
  listQuestions(filter: {
    topic: {
      contains: "chocolate"
    }
  }) {
    items {
      question
      answer
    }
  }
}
大多数GraphQL服务器实现都支持解析器函数,这些函数是在请求字段值时调用的任意代码。您可以编写如下模式

类型查询{
listQuestions(过滤器:QuestionFilter,随机:Int):[Question!]!
}
并访问解析器函数中的参数

看起来像。通过翻阅文档,我看不出它支持“随机选取n”方法;它似乎主要被设计成围绕数据库存储的门面,而大多数数据库并没有针对这种查询进行优化

GraphQL支持从查询中选择random 5吗

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

这样,在服务器端,我可以随机选择5条记录

 query listAll {
  listQuestions(filter: {
    topic: {
      contains: "chocolate"
    }
  }) {
    items {
      question
      answer
    }
  }
}
大多数GraphQL服务器实现都支持解析器函数,这些函数是在请求字段值时调用的任意代码。您可以编写如下模式

类型查询{
listQuestions(过滤器:QuestionFilter,随机:Int):[Question!]!
}
并访问解析器函数中的参数


看起来像。通过翻阅文档,我看不出它支持“随机选取n”方法;它似乎主要被设计成围绕数据库存储的门面,而大多数数据库并没有针对这种查询进行优化。

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


如果您使用的是AWS AppSync,则可以使用Lambda解析器并将其附加到查询,这样您就可以编写逻辑来拾取Lambda中的随机值,从而使其成为GraphQL响应的一部分。这是实现这一点的一种方法。

David关于在解析器中编写此逻辑(作为GraphQL方法)的看法是正确的

如果您使用的是AWS AppSync,则可以使用Lambda解析器并将其附加到查询,这样您就可以编写逻辑来拾取Lambda中的随机值,从而使其成为GraphQL响应的一部分。这是一种方法