У меня есть очень простой распознаватель graphQL, который я пытаюсь заставить работать, и по какой-то причине это не так, и он продолжает возвращать ноль, хотя я установил GSI для имени пользователя, к которому я пытаюсь выполнить запрос.
Схема GraphQL:
type Query {
getUsersDevByUsername(username: String!): UsersDev
}
type UsersDev {
id: ID!
username: String!
group: Int
hasProfile: Boolean
currentSkill: Int
highestSkill: Int
}
распознаватель GraphQL по запросу:
{
"version" : "2017-02-28",
"operation" : "Query",
"index" : "username-index",
"query" : {
## Provide a query expression. **
"expression": "username = :username",
"expressionValues" : {
":username" : $util.dynamodb.toDynamoDBJson($ctx.args.username)
}
}
}
Запрос, который я пытаюсь запустить:
query test {
getUsersDevByUsername(username:"testUser"){
id
username
group
currentSkill
highestSkill
}
}
Ошибка:
{
"data": {
"getUsersDevByUsername": null
},
"errors": [
{
"path": [
"getUsersDevByUsername",
"id"
],
"locations": null,
"message": "Cannot return null for non-nullable type: 'ID' within parent 'UsersDev' (/getUsersDevByUsername/id)"
},
{
"path": [
"getUsersDevByUsername",
"username"
],
"locations": null,
"message": "Cannot return null for non-nullable type: 'String' within parent 'UsersDev' (/getUsersDevByUsername/username)"
}
]
}
Я понятия не имею, что я делаю неправильно, я включил индекс, который я использую в решателеи я следую примеру, приведенному в примечаниях решателя.Это такой простой запрос, и я не понимаю, зачем нужна вся эта сложность.Время, затрачиваемое на настройку смехотворно простых запросов, для написания которых на SQL потребовалось бы буквально 5 секунд, действительно отвлекает меня от этого.Это должно быть "так здорово", но шаблон, который требуется, чтобы заставить это работать, является смешным.
Может ли кто-нибудь ПОЖАЛУЙСТА помочь мне заставить это работать, чтобы я мог действительно работать над чем-то продуктивным, а не почему простой запрос не работает?
РЕДАКТИРОВАТЬ:
ТАК, наконец-то у меня все заработало.Необходимо изменить результат с:
$util.toJson($ctx.result)
на:
#if($ctx.result.items.size()>0)
$util.toJson($ctx.result.items[0])
#else
null
#end)
, что не имеет смысла, так как пример AWS для получения его по id использует первый, но как угодно, по крайней мересейчас работает.