gpt4 book ai didi

amazon-dynamodb - AWS AppSync GraphQL 按字段值查询记录

转载 作者:行者123 更新时间:2023-12-04 07:03:36 27 4
gpt4 key购买 nike

我有一个用户表,其中包含电子邮件、电话等,我想根据其电子邮件或电话值(而不是#Id)来查询记录。没有足够的知识来做到这一点 - 我写了一个这样的模式:

type Query {
...
getUser(id: ID!): User
getUserByEmail(input: GetUserByEmailInput!): User
...
}
input GetUserByEmailInput {
email: String!
}

在针对 getUserByEmail(..) 的解析器中,我尝试进行实验,但到目前为止没有任何效果,因此它保持默认状态:

enter image description here

所以当我向查询控制台运行这样的查询时:

query GetUserByEmail {
getUserByEmail(input: {email: "email@email.com"}) {
id
name
email
image
}
}

这会返回如下错误:

{
"data": {
"getUserByEmail": null
},
"errors": [
{
"path": [
"getUserByEmail"
],
"data": null,
"errorType": "DynamoDB:AmazonDynamoDBException",
"errorInfo": null,
"locations": [
{
"line": 41,
"column": 5,
"sourceName": null
}
],
"message": "The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: xxx)"
}
]
}

如何通过非 Id 字段值查询记录?

最佳答案

如果您在控制台中使用“创建资源”流程,它将创建一个 listUsers 查询,如下所示。请注意,DynamoDb 操作将是具有 DynamoDb 过滤器表达式的扫描,您可以在其中使用任何字段来查询 DynamoDb。请参阅下面的映射模板。

{
"version": "2017-02-28",
"operation": "Scan",
"filter": #if($context.args.filter) $util.transform.toDynamoDBFilterExpression($ctx.args.filter) #else null #end,
"limit": $util.defaultIfNull($ctx.args.limit, 20),
"nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.nextToken, null)),
}

您可以在 AWS AppSync 文档中找到有关扫描和筛选表达式的更多详细信息:

https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-resolvers.html

关于amazon-dynamodb - AWS AppSync GraphQL 按字段值查询记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53746487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com