Как проверить, существует ли пользователь в базе данных с axis.get для Api Gateway? - PullRequest
0 голосов
/ 04 октября 2019

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

есть ли способ написать функцию, содержащую axios.get (URL) .then (), которая выдаст мне логический результат? True, если имя пользователя существует, и false в противном случае.

import axios from 'axios' 

function validateUser(username) {
   URL: API_GATEWAY_URL
   isExist = true;
   axios.get(url + '?username=' + username) 
   .then(response => {
     return response.json})
   .then(json => {
     if(json.data.statusCode != 200)
     { 
      isExist = false;
     }
    })
   .catch(error => console.error(error))

   return isExist;
}

Однако isExist не может быть видоизменен независимо от того, истинно (json.data.statusCode! = 200) значение true или нет. Пожалуйста, помогите, я новичок в JavaScript.

1 Ответ

1 голос
/ 04 октября 2019

Это происходит потому, что axios.get возвращает Promise, который работает асинхронно. Так что ваш isExist не мутировал. Также вы должны возвращать обещание от validateUser, когда вам нужно контролировать состояние.

Также вы можете использовать async/await.

РЕДАКТИРОВАТЬ: (минимальная реализация в некоторыхСпособ реагирования / псевдокода)

// api.js
import axios from 'axios' 

function validateUser(username) {
   return axios.get(url + '?username=' + username)
}
// main.js
import api from 'api'

onUserKeypress(username) {
    api.validateUser(username)
        .then(({json}) => {
            if(json.data.statusCode != 200) {
                this.form.valid = false;
                this.showError(username)};
         })
}
...