比如我要做一个博客详情页,我会查文章表,然后将文章标题、作者、内容render出去,这就完成了一个路由请求。但如果我想在同一个页面再显示文章点击量排行榜,就需要另一个查询,如何才能做到render两个或以上mongodb查询的内容?
比如我要做一个博客详情页,我会查文章表,然后将文章标题、作者、内容render出去,这就完成了一个路由请求。但如果我想在同一个页面再显示文章点击量排行榜,就需要另一个查询,如何才能做到render两个或以上mongodb查询的内容?
楼主遇到的问题应该是进行了异步的数据查询,同时第二次查询依赖第一次查询结果。直接看代码吧!
var sql = 'xxxxxxx';
async.waterfall([function (cb) {
mysql.connection.query(sql, function (err, result) {
if (err) {
console.log(err);
throw err;
}
var response = [];
//此处省略数据处理逻辑
cb(null, response);
});
}, function (result, cb) {
async.eachSeries(result, function iterator(item, callback) {
var sql = 'x'x'x'x'x'x'x'x'x'x';
mysql.connection.query(sql, function (err, commentResult) {
if (err) {
console.log(err);
throw err;
}
var formatResult = [];
_.each(commentResult, function (item) {
// 省略处理逻辑
formatResult.push(item);
});
if (commentResult.length) {
//xxxxx 省略处理逻辑
}
callback();
});
}, function done(err) {
console.log("err: " + err);
cb(null, result);
});
}], function (err, results) {
cb(null, {
"msg": "查询成功",
"result": 1,
"data": results
});
});
以上代码主要是使用 async 中间件
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
先定义两个不同的查询方法:
你可以试试这种方法,我觉得可以满足你的要求