当前位置: 首页 > 知识库问答 >
问题:

Express:未定义的等待函数

莘绍元
2023-03-14

在执行ExecuteSQL函数之后,我会得到未定义的。登录函数使用ExecuteSQL函数用于检查用户是否存在?我在运行这个文件时遇到以下错误。异步等待。

“nodemon”因更改而重启...>[nodemon]开始节点dl.js>未定义>未定义>指示符1

  async function ExecuteSQL(strSQL) {
        try {
            const pool = await getConnection();
            if (pool) {
                const result = await pool.request()
                    .query(strSQL, async function (err, sqlResult) {
                        if (err) {
                            console.log(err);
                        }
                        else {
    //                        console.log(strSQL);
    //                        console.log(sqlResult);
                            return sqlResult;
                        }
                    });
            }
            else console.log(pool);
        } catch (err) {
            console.log(err);
        }
    };
    
    
    async function login(strUID) {
        const strSQL = `SELECT fUserPwd FROM tblUser WHERE fUserID ='${strUID}'`;
        try {
            const result = await ExecuteSQL(strSQL).then(function (data) {
                console.log(data);
                return data
               });
               
               console.log(result);
            console.log('indicator1')
        } catch (err) {
            console.log(err);
        }
    
    };
    
    login('ADMIN');

共有1个答案

公孙俭
2023-03-14

您没有从ExecuteSQL返回任何内容。此外,不应将async/await与回调混合使用。您不应该将async/await混合使用。然后()决定您更喜欢哪一个,并坚持您的决定。

你只要做

async function ExecuteSQL(strSQL) {
    try {
        const pool = await getConnection();
        //you don't need to check for the pool, because getConnection() will throw if there is an error 
        const result = await pool.request().query(strSQL);
        return result;
    } catch (err) {
        console.log(err);
    }
};


async function login(strUID) {
    const strSQL = `SELECT fUserPwd FROM tblUser WHERE fUserID ='${strUID}'`;
    try {
        const result = await ExecuteSQL(strSQL);
        console.log(result);
        return result;
    } catch (err) {
        console.log(err);
    }

};

而且您不应该使用字符串连接或字符串模板来构造查询,因为这样很容易出错并且不安全。有关如何创建参数化查询,请参阅mssql手册。

 类似资料:
  • 函数执行时间过长。尝试使用await异步函数,但没有效果。返回未定义,因为不等待。 我有我的index.js: 和我的signupapi.js: 这是运行index.js并调用时的节点输出: 我当前在DB中有37个具有相同数据的条目,因此返回37。 但这是最后执行的,并且出现在控制台的底部,而它应该出现在顶部。

  • 我正在尝试使用Express 4.0上传单个图像文件文本字段 1) 穆特的要求。车身要求。如果登录控制台,则未定义文件对象 2)res.json(测试时也res.send)获取错误-TypeError:res.json不是Object.handle的函数) multer使用力矩配置如下。js表示日期,几乎是multer Github文档中的一行对一行: 这是客户端表单 我做错了什么?

  • 问题内容: 我已经运行(并重新启动了MySQL / Apache 2),但是仍然出现此错误: 致命错误:在第21行的/home/validate.php中调用未定义的函数mysql_connect() 说/etc/php5/apache2/conf.d/pdo_mysql.ini文件已被解析。 问题答案: 好吧,这是你的机会!看来PDO已准备就绪;用它代替。 尝试检查是否正在加载PHP MySQL

  • 我已经运行了(并重新启动MySQL/Apache 2),但我仍然得到这个错误: 致命错误:在第21行的/home/validate.php中调用未定义的函数mysql_connect() 表示/etc/php5/apache2/conf.d/pdo_mysql.ini文件已被解析。

  • 我做了这个自定义函数,并把它放在全局之外,这通常会工作。我也试着在主异步木偶函数中移动它,但也不起作用。这是一个简单的函数。在每个page evaluate函数中,我调用它并传递选择器。但是,它的说法没有定义和promise拒绝,这是奇怪的,因为函数不是promise....请帮助 我尝试将函数转换为异步函数,添加了一个新的参数页。然后,我将async添加到我的评估函数中,然后将puppeteer

  • 我看了类似的问题,没有找到一个解决方案,我可以实现到我自己的代码,因此我做了这篇文章。我有以下代码: 最后一个console.log返回undefined,尽管pool.query中的console日志提供了我要查找的正确字符串。我尝试过的这段代码的另一个版本给出了暂挂的promise,而不是未定义的promise。 通过阅读其他文章,我理解这是因为我没有将wait与async函数一起使用。问题是