Неверная синтаксическая ошибка FilterExpression в AWS AppSync Resolver - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующий распознаватель для получения элементов по списку идентификаторов с комбинацией оператора IN.

{
"version" : "2017-02-28",
"operation" : "Query",
"query" : {
    ## Provide a query expression. **
    "expression": "studentId = :id",
    "expressionValues" : {
        ":id" : { "S": "$ctx.args.studentId" }
    }
},
"filter": {
    "expression": "topicId IN :ids",
    "expressionValues" : {
        ":ids" : { "NS" : $ctx.args.topicIds }
    }
},
"index": "studentId-index",
}

Получение следующей ошибки:

{
"data": {
   "listStudentBookmarkedTopics": null
 },
 "errors": [
{
  "path": [
    "listStudentBookmarkedTopics"
  ],
  "data": null,
  "errorType": "DynamoDB:AmazonDynamoDBException",
  "errorInfo": null,
  "locations": [
    {
      "line": 2,
      "column": 3
    }
  ],
  "message": "Invalid FilterExpression: Syntax error; token: \":ids\", near: 
  \"IN :ids\" (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: 
  ValidationException; Request ID: 
   R49QUD5LDF7KS83ABNTPLP10RBVV4KQNSO5AEMVJF66Q9ASUAAJG)"
  }
]
}

1 Ответ

0 голосов
/ 22 мая 2018

Можете ли вы попробовать изменить выражение фильтра на следующее?

"filter": {
    "expression": "contains(:ids, topicId)",
    "expressionValues" : {
        ":ids" : { "NS" : $util.toJson($ctx.args.topicIds) }
    }
}

Это добавляет вызов к $ util.toJson и использует содержит DynamoDB filterвыражение.

...