Борясь с этим уже некоторое время, и аплодисменты Я изменил имя запроса для вопроса на getDeviceReadings, я использую getAllUserDevices (извините за путаницу)
type Device {
id: String
device: String!
}
type Reading {
device: String
time: Int
}
type PaginatedDevices {
devices: [Device]
readings: [Reading]
nextToken: String
}
type Query {
getDevicesReadings(nextToken: String, count: Int): PaginatedDevices
}
Тогда у меня есть распознаватель по запросу getDevicesReadings, который отлично работает и возвращает все устройства, которые пользователь пока имеет хорошие
{
"version": "2017-02-28",
"operation": "Query",
"query" : {
"expression": "id = :id",
"expressionValues" : {
":id" : { "S" : "${context.identity.username}" }
}
}
#if( ${context.arguments.count} )
,"limit": ${context.arguments.count}
#end
#if( ${context.arguments.nextToken} )
,"nextToken": "${context.arguments.nextToken}"
#end
}
Теперь я хочу вернуть все показания устройств на основе исходного результата, поэтому у меня есть определитель для getDevicesReadings / readings
#set($ids = [])
#foreach($id in ${ctx.source.devices})
#set($map = {})
$util.qr($map.put("device", $util.dynamodb.toString($id.device)))
$util.qr($ids.add($map))
#end
{
"version" : "2018-05-29",
"operation" : "BatchGetItem",
"tables" : {
"readings": {
"keys": $util.toJson($ids),
"consistentRead": true
}
}
}
С отображением ответа, таким образом ..
$utils.toJson($context.result.data.readings)
Я запускаю запрос
query getShit{
getDevicesReadings{
devices{
device
}
readings{
device
time
}
}
}
возвращает следующие результаты
{
"data": {
"getAllUserDevices": {
"devices": [
{
"device": "123"
},
{
"device": "a935eeb8-a0d0-11e8-a020-7c67a28eda41"
}
],
"readings": [
null,
null
]
}
}
}
Как вы можете видеть на изображении, основным ключом раздела является устройство в таблице показаний. Я смотрю журналы и получаю следующее
Извините, если вы не можете прочитать журнал, он в основном говорит, что есть необработанные ключи
и следующее сообщение об ошибке
"message": "The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: 0H21LJE234CH1GO7A705VNQTJVVV4KQNSO5AEMVJF66Q9ASUAAJG)",
Я догадываюсь, что мое отображение не совсем корректно, и я передаю показания в качестве ключей?
Любая помощь с благодарностью