我正在使用AWS appsync + DynamoDB。
问题:我在“用户”模式中创建了新字段“等级”:
type Users {
id: ID!
first: String!
last: String!
rating: String #<----The new field
}
AppSync创建了所有资源,我可以使用Mutations创建新记录,并且它的工作原理就像是一种魅力。
mutation createUsers{
createUsers(input:{
first:"John"
last:"Smith"
rating:"B" #<---Writing new field without problem
}){
id
first
last
rating #<---Confirming that is recorded in DynamoDB
}
}
问题是我无法弄清楚如何编写解析器以使以下查询正常工作。
query{
queryUsersByRating(rating: "B"){
items{
id
username
rating
}
}
}
结果是这样的:
{
"data": {
"queryUsersByRating": null
}
}
在“缺少解析程序”下here可以清楚地识别出该问题,但是没有明确的解决方案。
我尝试直接在AppSync界面中附加以下解析器,但不起作用:
{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
"expression": "rating = :rating",
"expressionValues" : {
":rating" : $util.dynamodb.toDynamoDBJson($ctx.args.rating)
}
}
}
感谢您的帮助!
答案 0 :(得分:0)
您不必编写自己的解析器即可按等级查询,Appsync将所有字段都封装在filter
内。
query{
queryUsersByRating(filter: {rating: "B"}){
items{
id
username
rating
}
}
}