Как я могу обрабатывать запросы MySQL в JavaScript с помощью этих асинхронных функций? - PullRequest
0 голосов
/ 08 декабря 2018

кто-нибудь может мне помочь с моей проблемой?Я новичок в 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();
});

Это ничего не дает

Спасибо за помощь

1 Ответ

0 голосов
/ 08 декабря 2018

Вы используете callback функции как 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(',')})`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...