Javascript 如何在nodejs中向视图呈现多个回调函数

Javascript 如何在nodejs中向视图呈现多个回调函数,javascript,node.js,mongodb,asynccallback,Javascript,Node.js,Mongodb,Asynccallback,我创建了两个从mongodb获取值的函数,然后我想将这些函数渲染到视图,但我一次只能指定一个函数,但不能同时指定两个函数在视图中渲染。 我想知道做以下工作的最佳技巧。 实际上,我想通过以下url显示类别中的书籍 http://localhost:3000/category/catid/56696ddeef90d5400b604361 这将获取所提到的类别中的所有书籍以及侧边栏中的所有书籍类别 我的代码如下 function get_books_details(callback){ //c

我创建了两个从mongodb获取值的函数,然后我想将这些函数渲染到视图,但我一次只能指定一个函数,但不能同时指定两个函数在视图中渲染。 我想知道做以下工作的最佳技巧。 实际上,我想通过以下url显示类别中的书籍

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屏幕截图 您可以尝试以下方法:

 router.get('/catid/:catId', function(req, res) {
   var get_cat_id=req.params.catId;       

   get_books_details(function(data_book){
       console.log(data_book);
       get_cat_details(function(data_cat){
          console.log(data_cat);
          res.render('pages/category', {title:"LNA Publication",itm:data_cat,"allbuk":data_book,"get_category":get_cat_id});         
       });   
    });  
});

@纳伦德拉·夏尔马。不客气。如果答案解决了你的问题,你可以接受。