首页 > 解决方案 > 无法从节点 js 中的异步发送响应

问题描述

我正在使用一个非常简单的功能。我正在查询的模型文件和我正在使用模型函数的控制器文件。controller.js 函数如下

let handlers = async (request, h) => {


    let res = await users.checkUsers(request.payload);
    console.log("response --- ");
    console.log(res);

    
    if (res > 0)
        return h.response({
            message: 'This user is already exist please try with some other creds.'
        }).code(402)
 
    
    return h.response({
        message: 'Successfully created.'
    }).code(200)
}

users.checkUser 函数如下

let checkUsers = async (params) => {  

    sql.connect(config.dbConfig, function(err){
        if(err) console.log(err)
        let sqlRequest = new sql.Request();
        let query = "SELECT count(slNo) AS 'totalUser' FROM Users where email='" + params.email + "'";
        
        sqlRequest.query(query, function(err, data){
            if(err) return err;
            sql.close();
            console.log(data.recordsets[0][0].totalUser)
            return data.recordsets[0][0].totalUser;
            
        })
    })

}

现在,如果我控制台 data.recordsets[0][0].totalUser 我能够看到结果。但是无法返回响应。当我尝试在用户控制器文件中访问它时,我能够看到“未定义”。不知道我错过了什么

标签: node.jsasync-await

解决方案


推荐阅读