मैं प्रतिक्रिया में अपना वेब एप्लिकेशन प्रोग्रामिंग कर रहा हूं। (प्रतिक्रिया मूल निवासी नहीं)

कल, यह काम कर रहा था। मैंने import बयानों और एपीआई संस्करणों के साथ खेलने की कोशिश की है। अब मुझे निम्न त्रुटि मिल रही है:

हैंडल न किया गया अस्वीकृति (लेखन त्रुटि): _aws_amplify_core__WEBPACK_IMPORTED_MODULE_8__.AWS.DynamoDB एक निर्माता नहीं है

import React, { Component } from 'react'
import { Route, Switch } from "react-router-dom";
import Amplify, { Auth  } from 'aws-amplify';
import { AWS } from '@aws-amplify/core';
import { CognitoIdentityServiceProvider } from 'aws-sdk';

import PropTypes from 'prop-types'

import '../../stylesheets/Dashboard.css'

export default class Dynamo extends Component {

    constructor(props) {
        super(props)
        this.state = {}
    }

    componentDidMount() {
        Amplify.configure({
            Auth: {
                identityPoolId: identityPoolId,
                region: region,
                userPoolId: userPoolId,
                userPoolWebClientId: userPoolWebClientId,
            },
        });

        var context = this;
        Auth.currentCredentials().then(credentials => {
            // Constructor for the global config.
            var AWSconfig = new AWS.Config({
                apiVersion: '2016-04-18',
                credentials: credentials,
                region: 'us-XXXX-#'
            });
            console.log(credentials)
            var dynamodb = new AWS.DynamoDB({
                region: 'us-XXXX-#',
                credentials: credentials
            }); 
            var params = {
                Item: {
                    "email": {
                        S:`first.last@gmail.com`
                    },
                    "date": {
                        N: `${new Date()}`
                    },
                    "hours_worked": {
                        N: `5`
                    },
                    "note_approved": {
                        BOOL: (Math.random() < 0.5)
                    },
                    "note_written": {
                        BOOL: (Math.random() < 0.5)
                    },
                    "program": {
                        S: `*************************`
                    },
                    "total_miles": {
                        N: `${parseInt(Math.random() * 20 + 1)}`
                    }
                }, 
                ReturnConsumedCapacity: "TOTAL", 
                TableName: "Services"
            };
            dynamodb.putItem(params, function(err, data) {
                if (err) 
                    console.log(err, err.stack); // an error occurred
                else {
                    console.log(data); // successful response
                }
            });
            params = {
                ExpressionAttributeNames:{
                    "#email": "email",
                    "#datetime_from": "date"
                },
                ExpressionAttributeValues: {
                    ":e": {
                        S: "first.last@gmail.com"
                    },
                    ":dearly": {
                        N: "1551500000000"
                    }, 
                    ":dlate": {
                        N: "1551600000000"
                    }
                }, 
                KeyConditionExpression: "#email = :e and #datetime_from BETWEEN :dearly and :dlate", 
                TableName: "Services"
            };
            dynamodb.query(params, function(err, data) {
            if (err) console.log(err, err.stack);   // an error occurred
            else {
                console.log(data);                  // successful response
                context.setState({
                    records: data
                })
            }   
            });
        });
    }

    render() {
        return (
            <div className='Dynamo'>
                I AM RENDERING<br />
                {this.state.records ? JSON.stringify(this.state.records) : null}
            </div>
        )
    }
}

Dynamo.propTypes = {

}
0
AlleyOOP 4 मार्च 2019, 00:23

1 उत्तर

सबसे बढ़िया उत्तर

@ एडम की टिप्पणी के बाद, मैंने देखा कि AWS.DynamoDB अपरिभाषित है। मैं किसी भी तरह CognitoIdentityServiceProvider का उपयोग नहीं कर रहा था, इसलिए मैंने इसे DynamoDB मॉड्यूल से बदल दिया। उम्मीद है कि यह स्निपेट अन्य समान रूप से खोए हुए रिएक्ट -र्स के काम आएगा।

import React, { Component } from 'react'
import { Route, Switch } from "react-router-dom";
import Amplify, { Auth  } from 'aws-amplify';
// import { AWS } from '@aws-amplify/core'; Following @Adam's comment. 
import { DynamoDB } from 'aws-sdk';

import PropTypes from 'prop-types'

import '../../stylesheets/Dashboard.css'

export default class Dynamo extends Component {

    constructor(props) {
        super(props)
        this.state = {}
    }

    componentDidMount() {
        Amplify.configure({
            Auth: {
                identityPoolId: identityPoolId,
                region: region,
                userPoolId: userPoolId,
                userPoolWebClientId: userPoolWebClientId,
            },
        });

        var context = this;
        Auth.currentCredentials().then(credentials => {
            // Constructor for the global config.
            console.log(credentials)
            var dynamodb = new DynamoDB({
                region: region,
                credentials: credentials
            }); 
...
0
AlleyOOP 3 मार्च 2019, 22:47