router.get('/detalle/(:id)', (req, res) => {
let vehiculo_base
db.query("select b.nombre, count(b.nombre) AS n_vehiculos from base AS b, vehiculo AS v where b.id = v.id_base AND b.id_flota = " req.params.id , function(err, result){
if (err) throw err
vehiculo_base = result
})
res.send(vehiculo_base)
})
我想將多個查詢結果添加到回應中,但變數 vehiculo_base 未在 db.query 中定義
uj5u.com熱心網友回復:
db.query 是異步函式,所以試試這樣。
router.get('/detalle/(:id)', (req, res) => {
let vehiculo_base
db.query("select b.nombre, count(b.nombre) AS n_vehiculos from base AS b, vehiculo AS v where b.id = v.id_base AND b.id_flota = " req.params.id , function(err, result){
if (err) throw err
vehiculo_base = result
res.send(vehiculo_base)
})
})
第二種方法
router.get('/detalle/(:id)', async (req, res) => {
let vehiculo_base
var vehiculo_base = await db.query("select b.nombre, count(b.nombre) AS n_vehiculos from base AS b, vehiculo AS v where b.id = v.id_base AND b.id_flota = " req.params.id);
res.send(vehiculo_base)
})
uj5u.com熱心網友回復:
您可以將此路線重寫為
router.get('/detalle/(:id)', async (req, res) => {
try{
let vehiculo_base = await
db.query("select b.nombre, count(b.nombre) AS n_vehiculos from base AS b, vehiculo AS v where b.id = v.id_base AND b.id_flota = " req.params.id)
res.send(vehiculo_base);
}catch(error){
res.send(error);
}
});
uj5u.com熱心網友回復:
問題是查詢是異步的,并且您在res.send同步執行后立即回傳結果。
一旦結果可用,您應該回傳結果。
router.get('/detalle/(:id)', (req, res) => {
db.query("select b.nombre, count(b.nombre) AS n_vehiculos from base AS b, vehiculo AS v where b.id = v.id_base AND b.id_flota = " req.params.id , function(err, result){
if (err) throw err
res.send(result)
})
})
您應該在將來添加日志以了解流程,并閱讀一些有關異步和同步執行的資訊。以及 javascript 執行的作業原理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/510363.html
上一篇:如何通過AJAXAPI呼叫檢查是否在MongoSchema中使用了用戶名
下一篇:Alglib 求解函式最小值
