[英]How can I handle MySQL queries in JavaScript with those asynchronous functions?
有人可以幫助我解決我的問題嗎? 我是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
,它將無法工作。 您需要散發查詢。
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(',')})`;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.