如何在 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
}
}
}
我使用 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
}
}
}