【发布时间】:2016-03-23 14:53:12
【问题描述】:
我创建了两个从 mongodb 获取值的函数,然后我想将这些函数呈现给视图,但我一次只能分配一个函数,但不能将这两个函数都分配给视图中呈现。 我想知道执行以下操作的最佳技术。 其实我想通过以下网址显示类别中的书籍
http://localhost:3000/category/catid/56696ddeef90d5400b604361
这将获取提到的类别中的所有书籍以及侧边栏中的所有书籍类别。
我的代码如下
function get_books_details(callback){
//console.log(get_cat_id);
//res.render('pages/category', { title: 'Express','get_cat':get_cat_id});
var get_books=[];
var array = [];
/* query mongodb start */
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
db.collection('book', function(err, collection) {
collection.find().toArray(function(err,results) {
results.forEach(function(item) {
array.push(item);
});
callback(array);
// console.log(array);
});
});
} //else end
});
/* query mongodb end */
}
function get_cat_details(callback){
//console.log(get_cat_id);
//res.render('pages/category', { title: 'Express','get_cat':get_cat_id});
var get_cats_call=[];
var array_cats = [];
/* query mongodb start */
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
db.collection('category', function(err, collection) {
collection.find().toArray(function(err,results) {
results.forEach(function(itemcats) {
array_cats.push(itemcats);
});
callback(array_cats);
//console.log(array_cats);
});
});
} //else end
});
/* query mongodb end */
}
router.get('/catid/:catId', function(req, res) {
var get_cat_id=req.params.catId;
get_books_details(function(data_book){
console.log(data_book);
res.render('pages/category', {title:"LNA Publication","allbuk":data_book,"get_category":get_cat_id});
});
get_cat_details(function(data_cat){
console.log(data_cat);
res.render('pages/category', {title:"LNA Publication",itm:data_cat,"get_category":get_cat_id});
});
});
输出控制台的 CLI 屏幕截图 Screenshot of command line interface
【问题讨论】:
标签: javascript node.js mongodb asynccallback