Javascript 无法从mysql推送到数组结果
这是我的密码Javascript 无法从mysql推送到数组结果,javascript,mysql,express,Javascript,Mysql,Express,这是我的密码 var nbu = req.body.nbu; var inv=[]; db.query( "SELECT * FROM `invoice_ska` WHERE nm_client =?", nbu, (err, results) => { if (err) throw err; inv.push(results); } ); } console
var nbu = req.body.nbu;
var inv=[];
db.query(
"SELECT * FROM `invoice_ska` WHERE nm_client =?",
nbu,
(err, results) => {
if (err) throw err;
inv.push(results);
}
);
}
console.log(inv);//this just []
});
我不能控制台.log(myArr)我不知道为什么这是一个异步问题,MDN的完整指南很好地解释了异步javascript 要简单回答您的案例,您需要
console.log
查询回调块中的结果。为什么?因为您需要等待DB查询完成并返回数据,所以这是异步发生的
var nbu = req.body.nbu;
var inv=[];
db.query(
"SELECT * FROM `invoice_ska` WHERE nm_client =?",
nbu,
(err, results) => {
if (err) throw err;
inv.push(results);
console.log(inv);
}
);
您必须像这样编写代码,使用async wait等待承诺,然后执行您的逻辑
它认为这是因为节点的异步行为,使用承诺而不是回调并等待db返回数据
const someFunc = async (req, res) => {
var nbu = req.body.nbu;
var inv = [];
let results = await db.query(
"SELECT * FROM `invoice_ska` WHERE nm_client =?", nbu
);
if (results) {
inv.push(results);
}
console.log(inv);//this just []}