为什么我的异步等待无法正常工作

问题描述 投票:0回答:1

我正在使用Express js开发api,在我的api调用中,我调用了2个函数,首先是login(),其他函数是get_organizations(),但是在没有完成get_organization()函数的情况下调用了login(),我使用了async等待,但无法正常工作,任何人都可以帮助我解决此问题吗?我在这里添加了整个代码,

router.get('/', async (req, res) => {
    let token = await login();
    await get_organizations(token);
});

const get_organizations = async function (api_token) {
    try {
        console.log('Get List Of Organizations');
        console.log('Verifying token');
        let verify_token_data = await jwt.verify(api_token, config['token-secret']);
        console.log(verify_token_data);
        return false;      
    } catch (error) {
        console.log(error);
    }
}

const login = async function () {
    try {
        console.log('Login process started');
        const newToken = await jwt.sign({login:'login'},config['token-secret'],{ expiresIn: config['token-expires']});
        let username = 'root_admin'
        let password = 'Admin123';
        let token = String(cryptojs.lib.WordArray.random(20));
        console.log("token : "+token);
        await connection.query('SELECT * FROM users where username = ?  ',[username], async function(err, rows) {
            if (err) {
                console.log("Looged out failed");
            } else {
                const user = rows[0];
                console.log("psdsdsd");
                if(bcrypt.compareSync(password,user.passwordHash)) {
                    await connection.query('SELECT * FROM organizations where id = ?  ',[user.organizationId], async function(err, org_data) {
                        if (err) {
                            console.log("Looged out failed");
                        } else {
                            console.log("sdsd");
                            //console.log(org_data);
                            if(typeof org_data.name!='undefined') {
                                organization = org_data.name;
                            } else {
                                organization = 'VeriCurious';
                            }
                            //console.log(organization);
                            // create a token
                            const token = await jwt.sign({ id: user.id, username: user.username, organizationId: user.organizationId, organization: organization}, config['token-secret'], {
                                expiresIn: config['token-expires'] // expires in 30 minutes
                            }); 
                            console.log("Successfull loggedin");
                            console.log("New generated token : "+token);
                            return token;
                        }
                    });    
                }
            }    
        });

    } catch (error) {
        console.log(error);
    }
}
node.js express node-modules
1个回答
0
投票

[当调用一个函数时使用await时,基本上是在等待该函数中的Promise解析。调用的函数旨在返回该诺言

© www.soinside.com 2019 - 2024. All rights reserved.