Использование aws-sdk с ampify и React

У меня возникли проблемы с использованием AWS SDK для Javascript в приложении React, созданном с помощью Amplify. Я пытаюсь выполнить запись в таблицу DynamoDB после успешной загрузки изображения в S3. Загрузка изображения в настоящее время работает, но методы SDK для записи в тестовую таблицу DynamoDB - нет.

import React, { Component } from 'react';
import { Auth } from 'aws-amplify'
import { withAuthenticator } from 'aws-amplify-react'
import { Storage } from 'aws-amplify';
const aws = require('aws-sdk'); //"^2.2.41"
    handleSubmit = (event) => {
        event.preventDefault();
        if (this.state.file == null) {
            alert("File Not Chosen")
        }
        else {     
        const file = this.state.file;
        Storage.put(this.state.name, file, {
            contentType: 'image',
            bucket:'myapp-20181030214040-deployment'
        })
        .then (result => console.info(result))
        .catch(err => console.info(err));
        }

           Auth.currentCredentials()
           .then(credentials => {
             const dynamodb = new aws.DynamoDB({
               apiVersion: '2012-08-10',
               credentials: Auth.essentialCredentials(credentials)
             });
             let params = {
                Item: {
                "testKey": {
                S: "test1"
                }
                }, 
                ReturnConsumedCapacity: "TOTAL", 
                TableName: "test"
            };
            dynamodb.putItem(params, function(err, data) {
                if (err) console.info(err, err.stack); // an error occurred
                else     console.info(data);           // successful response
                /*
                data = {
                ConsumedCapacity: {
                CapacityUnits: 1, 
                TableName: "Music"
                }
                }
                */
            });
           })
    }

Первая часть отправки дескриптора работает, вплоть до Storage.put, но метод DynamoDB putItem, похоже, ничего не делает, несмотря на компиляцию. Может ли кто-нибудь указать мне правильное направление использования их вместе?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
1 075
1

Ответы 1

Вы можете использовать что-то вроде AppSync или API Gateway перед вашим Dynamo db api.

Вы можете посмотреть: https://github.com/aws-samples/aws-mobile-appsync-events-starter-react

Для примера с использованием AppSync и GraphQL (при поддержке Dynamodb)

или: https://github.com/aws-samples/aws-mobile-react-sample

который использует API Gateway для вызова REST api для запроса Dynamodb. Это можно легко сделать, сначала вызвав amplify add storage, выбрав NoSql Database и настроив свою таблицу с помощью ampify, а затем вызвав amplify add api, он добавит кучу файлов в качестве бэкэнда для вас, который вы может вызвать, чтобы вызвать в ваш динамо-стол.

Но также в существующем коде вы можете попробовать использовать sdk с правильным оператором импорта в реакции, например import AWS from 'aws-sdk';, чтобы увидеть, работает ли он.

Другие вопросы по теме