我在将两个MySQL查询的结果传递给我的模板引擎(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选项,看看这是否有帮助。
已解决。请参阅更新一节中的说明。谢谢你的光临。