有人可以帮助我解决我的问题吗?我是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();
});
这什么也没输出
感谢帮助
答案 0 :(得分:1)
您正在将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(',')})`;