Не удается получить элемент из DynamoDB через React-отправку формы, но через автономный код nodejs он работает - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь запросить DynamoDB для простого экрана входа в систему. Я использую ReactJS

export  class Login extends Component {

  constructor(props) {
    super(props);

    this.props = props;

    this.state = {
      caffeID: "",
      password: "",
      validUser: false
    };
  }

  validateForm() {
    return this.state.caffeID.length > 0 && this.state.password.length > 0;
  }

  handleChange(event) {
    this.setState({
      [event.target.id]: event.target.value
    });
  }

  handleSubmit (event){
    event.preventDefault();
    console.log(this.props);

   // console.log("hoooolllla ..Caffe ID is "+this.state.caffeID+" and password is "+this.state.password);
    console.log("checking from db");
    var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
    console.log("Caffe ID ==> "+this.state.caffeID);
    var params = {
            TableName: 'caffeuser',
            Key: {'caffeid': this.state.caffeID}
     };

       var value=    docClient.get(params, function(err, data) {
               console.log("Querying database..");
             if (err) {
               console.log("Error", err);
             } else {
               console.log("Success", data.Item);
             }
           });
  }

  render() {

      if (this.state.validUser === true) {

          console.log("Redirecting to login screen... .");
          return <Redirect to='/table' />
        };

    return (

      <div className="Login">

        <form onSubmit={this.handleSubmit.bind(this)}>
          <FormGroup controlId="caffeID" bsSize="large">
            <ControlLabel>Caffe ID</ControlLabel>
            <FormControl
              autoFocus
              type="caffeID"
              value={this.state.caffeID}
              onChange={this.handleChange.bind(this)}
            />
          </FormGroup>
          <FormGroup controlId="password" bsSize="large">
            <ControlLabel>Password</ControlLabel>
            <FormControl
              value={this.state.password}
              onChange={this.handleChange.bind(this)}
              type="password"
            />
          </FormGroup>
          <Button
            block
            bsSize="large"
            disabled={!this.validateForm()}
            type="submit"
          >
            Login
          </Button>
        </form>
      </div>



    );
  }
}

export default Login;

Теперь код для подключения и запроса к Dynamodb застрял.

enter image description here

Но если я запускаю тот же фрагмент кода, что и код js автономного узла, он работает отлично.

Вот код узла Js

var AWS = require('aws-sdk');
//Set the region 
AWS.config.update({region: 'us-east-2',
 accessKeyId: 'xxxxxxxxxxxxxx',
secretAccessKey: 'xxxxxxxxxxxxxx'    
});

 var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
    var params = {
            TableName: 'caffeuser',
            Key: {'caffeid': 'C0001'}
     };

           docClient.get(params, function(err, data) {
               console.log("Querying database..");
             if (err) {
               console.log("Error", err);
             } else {
               console.log("Success", data.Item);

Вот результат из кода узла JS

Querying database..
Success { caffeid: 'C0001', password: 'abc123' }

Не могли бы вы указать мне, где я делаю неправильно? Должен ли я использовать async - await для этого сценария?

============================================

Правка 6 ноября 2018 г.,

Я загрузил скриншот запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...