如何在 aws AppSync 中按 createdAt 和 updatedAt 进行排序和过滤?

How to sort and filter by createdAt and updatedAt in aws AppSync?

我使用 AWS Amplify 创建了一个 GraphQL API。在 DynamoDB 中,字段 createdAt 和 updatedAt 是自动创建的。我无法使用 Appsync 过滤此字段的值。我想使用过滤范围介于两个 createdAt 字段之间的 appsync 查询数据,但它没有出现在我的 appsync 查询架构中。

那么如何使用 createdAt 过滤器或排序进行查询?

这是一个 AWS-Amplify 特定问题。这不是关于如何使用通用 GraphQL 做到这一点。

我终于找到了解决办法。

您必须直接在 schema.graphql

上添加自动生成的字段“createdAt”和“updatedAt”

像那样:

根据这个初始 schema.graphql:

type User @model(timestamps: { createdAt: "createdOn", updatedAt: "updatedOn" })
{
  id: String!
  username: String!
  firstName: String!
  lastName: String!
} 

它将变成:

type User @model
{
  id: String!
  username: String!
  firstName: String!
  lastName: String!
  createdAt: AWSDateTime! #important to keep it to have filter with keys
  updatedAt: AWSDateTime! #important to keep it to have filter with keys
} 

放大推送后,我们可以直接按日期获取项目,就像这样:

query MyQuery {
  listUsers(filter: {updatedAt: {between: ["2021-04-29T16:02:21.285Z", "2021-05-29T16:02:21.285Z"]}}) {
    items {
      id
      lastName
    }
  }
}