有人可以帮我解决我的问题吗?我是 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/