【问题标题】:how to render multiple callback function to views in nodejs如何将多个回调函数呈现给nodejs中的视图
【发布时间】: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


    【解决方案1】:

    你可以试试这个:

     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});         
           });   
        });  
    });
    

    【讨论】:

    • @Narendra Sharma 。不客气。如果它解决了您的问题,您可以接受答案。
    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多