首页 > 解决方案 > 如何使用axis.get到Api Gateway检查用户是否存在于数据库中?

问题描述

我正在尝试编写当我单击登录时检查用户名是否存在于数据库中的代码。

有没有办法编写一个包含 axios.get(URL).then() 的函数,这样它会给我一个布尔结果?如果用户名存在则为真,否则为假。

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;
}

但是,无论 (json.data.statusCode != 200) 是否为真,isExist 似乎都不会发生变异。请帮忙,我是 JavaScript 新手。

标签: javascriptnode.jsauthenticationaxiosaws-api-gateway

解决方案


发生这种情况是因为axios.get返回Promise异步工作。所以你isExist没有变异。validateUser此外,无论何时需要控制状态,您都应该将 promise 从to 返回。

你也可以使用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)};
         })
}

推荐阅读