javascript - 如何使用这些异步函数在 JavaScript 中处理 MySQL 查询?

标签 javascript mysql node.js asynchronous

有人可以帮我解决我的问题吗?我是 JavaScript (Node.js) 新手,并尝试执行 MySQL 查询,但这不会输出任何内容。我不知道如何处理这个问题。

async function processArguments() {
    var result_customer = [];
    for(let i = 2; i < process.argv.length; ++i) {
        let sql = "SELECT Mandantennummer, Firmenname, VornameAnsp, NachnameAnsp, Telefonnummer, Strasse, PLZ"
                  "FROM kunde, item"
                  "WHERE kunde.K_ID=item.K_ID AND I_ID="+ process.argv[i];

        await link.query(sql, function(err_customer, customer, fields_customer) {
            if(err_customer) throw err_customer;
            result_customer.push(customer);
        });
    }

    for(let i = 0; i < result_customer.length; ++i) {
        console.log(result_customer[i].Firmenname);
    }

    link.end();
}

link.connect(function(err) {
    if(err) throw err;

    processArguments();
});

这不会输出任何内容

感谢帮助

最佳答案

您正在使用callback函数作为Promise,这是行不通的。您需要 promise 查询。

async function processArguments() {
    var result_customer = [];
    for (let i = 2; i < process.argv.length; ++i) {
        let sql = "SELECT Mandantennummer, Firmenname, VornameAnsp, NachnameAnsp, Telefonnummer, Strasse, PLZ"
        "FROM kunde, item"
        "WHERE kunde.K_ID=item.K_ID AND I_ID=" + process.argv[i];

        const customer = await new Promise((resolve, rej) => {
            link.query(sql, function (err_customer, customer, fields_customer) {
                if (err_customer) rej(err_customer);
                resolve(customer);
            });
        });
        result_customer.push(customer);
    }
    link.end();
}

link.connect(function (err) {
    if (err) throw err;

    await processArguments();
});

如果你想await,它需要是一个Promise或一个async函数。

编辑:您可以连接 process.argv[i] 并将其与该查询中的 IN 一起使用。

let sql = `SELECT Mandantennummer, Firmenname, VornameAnsp, NachnameAnsp, Telefonnummer, Strasse, PLZ 
FROM kunde, item 
WHERE kunde.K_ID=item.K_ID AND I_ID IN (${process.argv.slice(2).join(',')})`;

关于javascript - 如何使用这些异步函数在 JavaScript 中处理 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53685444/

相关文章:

javascript - 用于构建仪表板(条形图、线形图、饼图等)的开源库/框架

javascript - 使用 YouTube API 创建播放列表时如何更改标题和说明?

php - 使用 volley 将 BLOB 图像从 mysql 显示到 android

php - 从同一个表中过滤逗号分隔值

node.js - 如何将 React 应用程序部署到 Azure 应用服务

javascript - Yii CJuiAutoComplete - 在 php 中将用户选择的值存储到数据库的最简单方法?

javascript - 为什么 CURL JS 不加载我的 CSS 文件?

mysql - 选择重复最大值(ID)

node.js - 如何通过cakePHP访问NodeJS数据?

node.js - nodejs/express - 立即将标准输出流式传输到客户端