Получение данных с помощью AppSync непосредственно из DynamoDB, похоже, работает для моего случая, но когда я пытаюсь поместить лямбда-функцию между ними, я получаю сообщения об ошибках "Невозможно разрешить значение (/ issueNewMasterCard / masterCards): типошибка несоответствия, ожидаемый тип LIST "
Глядя на выходные данные сопоставления ответов облачной службы AppSync, я получаю следующее:
"context": {
"arguments": {
"userId": "18e946df-d3de-49a8-98b3-8b6d74dfd652"
},
"result": {
"Item": {
"masterCards": {
"L": [
{
"M": {
"cardId": {
"S": "95d67f80-b486-11e8-ba85-c3623f6847af"
},
"cardImage": {
"S": "https://s3.eu-central-1.amazonaws.com/logo.png"
},
"cardWallet": {
"S": "0xFDB17d12057b6Fe8c8c434653456435634565"
},...............
вот как я настроил свой шаблон сопоставления ответов:
$utils.toJson($context.result.Item)
Я делаю эту мутацию:
mutation IssueNewMasterCard {
issueNewMasterCard(userId:"18e946df-d3de-49a8-98b3-8b6d74dfd652"){
masterCards {
cardId
}
}
}
, и это моя схема:
type User {
userId: ID!
masterCards: [MasterCard]
}
type MasterCard {
cardId: String
}
type Mutation {
issueNewMasterCard(userId: ID!): User
}
Функция Lambda:
exports.handler = (event, context, callback) => {
const userId = event.arguments.userId;
const userParam = {
Key: {
"userId":{S:userId}
},
TableName:"FidelityCardsUsers"
}
dynamoDB.getItem(userParam, function(err, data) {
if (err) {
console.log('error from DynamDB: ',err)
callback(err);
} else {
console.log('mastercards: ',JSON.stringify(data));
callback(null,data)
}
})