2017-08-29 40 views
0

我無法將兩個MySQL查詢的結果傳遞給我的模板引擎(EJS)。下面是一個經典的例子:如何在Node.js/Express中引用兩個MySQL查詢w/EJS?

dbConn.query(sqlQuery, function (err, result) { 
    if (err) throw err;  

    res.render('index', { 
    pageTitle: 'Index', 
    pageID: 'index', 
    qObj: result 
    }); 
    }); 

它就像一個魅力。我的index.ejs頁面接收qObj,我可以迭代行並按照我認爲合適的方式顯示它們。但我想傳遞兩個查詢,像這樣:

res.render('index', { 
    pageTitle: 'Index', 
    pageID: 'index', 
    qObj1: result1, 
    qObj2: result2 
    }); 

但是,這是行不通的:

dbConn.query(sqlQuery1, function (err, result1) { 
    if (err) throw err;  

    dbConn.query(sqlQuery2, function (err, result2) { 
    if (err) throw err;  

    res.render('index', { 
     pageTitle: 'Index', 
     pageID: 'index', 
     qObj1: result1, 
     qObj2: result2 
     }); 

    }); 
    }); 

這兩種:

var qry1; 
var qry2; 

dbConn.query(sqlQuery1, function (err, result1) { 
    if (err) throw err;  
    qry1 = Object.assign({}, result1); 
    }); 

dbConn.query(sqlQuery2, function (err, result2) { 
    if (err) throw err;  
    qry2 = Object.assign({}, result2); 
    }); 

res.render('index', { 
    pageTitle: 'Index', 
    pageID: 'index', 
    qObj1: qry1, 
    qObj2: qry2 
    }); 

的對象不後的堅持調用dbConn.query()方法。我嘗試製作深層副本不起作用。任何人都可以提出一個解決方法?謝謝。

更新

這裏是我如何解決它。我刪除了下面的代碼的實例:

if (err) throw err; 

離開這個:

dbConn.query(sql1, function (err, qry1) { 
    dbConn.query(sql2, function (err, qry2) { 
    res.render('index', { 
     pageTitle: 'Index', 
     pageID: 'index', 
     qry1: qry1, 
     qry2: qry2 
     }); 
    }); 
    }); 

它會做,但我爲了它的工作犧牲了異常處理。至少在這種情況下,在同一個對象方法調用中調用一個對象方法似乎也很奇怪。我會嘗試yBrodsky建議的JSON選項,看看是否有幫助。

+0

舊的JSON.parse(JSON.stringify(yourOb)) – yBrodsky

回答

0

已解決。請參閱更新部分的說明。感謝您的期待。