Отправка данных обратно с сервера узла обратно, чтобы отреагировать - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь создать логин для домашней страницы с реакцией и узлом, используя данные пользователя из жестко закодированной базы данных. Бэкэнд узла распознает пароль json и адрес электронной почты, но я не могу получить код для отправки данных обратно во внешний интерфейс для входа в систему.

Я протестировал бэкэнд с почтальоном, чтобы убедиться, что я могу получить данные.

узел сервера :

    app.post('/signin', (req, res) => { 
      if(req.body.email === database.users[0].email &&
        req.body.password === database.users[0].password) {

        res.json('success');  
      }
      else {
        res.status(400).json('error logging in');
      }
    })

реагировать

    class Signin extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
       signInEmail: '',
       signInPassword: ''
      }
    }

    onSubmitSignIn = () => {
      fetch('http://localhost:5000/signin', {
        method: 'post',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({
        email: this.state.signInEmail,
        password: this.state.signInPassword
      })
     })
      .then(user => {
        if (user.id) {
          this.props.loadUser(user)
          this.props.onRouteChange('home');
        }
      })
     }

база

    const database = {
      users: [
        {
          id: '123',
          name: 'andrew',
          email: 'andrew@outlook',
          password: 'p',
          entries: 0,
          joined: new Date()
        },
        {
          id: '124',
          name: 'sally',
          email:' sally@outlook',
          password: 'bananas',
          entries: 0,
          joined: new Date()
        },
      ],
    }

Это работает, когда я удаляю вызов .then(user =>) и сразу перехожу к this.props.onRouteChange('home'), но в противном случае остается на странице входа. Это сводит меня с ума, любая помощь приветствуется.

1 Ответ

0 голосов
/ 17 января 2019

Добро пожаловать в stackoverflow!

Я думаю, вы не отправляете правильные данные обратно во внешний интерфейс или не проверяете неправильные данные.

Ваше приложение nodeJS отправляет либо

res.json('success'); 

или

res.status(400).json('error logging in');

Так что независимо от того, что вы отправляете обратно строку. Но во внешнем интерфейсе вы проверяете атрибут id в ответе:

.then(user => {
  if (user.id) {
    this.props.loadUser(user)
    this.props.onRouteChange('home');
  }
})

Ваш user является объектом ответа, который вы получите после fetch. Если вы переименуете user в response и позвоните response.json(), вы можете добавить еще один .then(json => {...}, где вы можете проверить, что ваш объект json является одной из строк, которые вы отправляете своим бэкэндом nodeJS.

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