2017-04-11 36 views

回答

1

你試過:

var totalcount = parseInt(parseInt(count1)+parseInt(count2)); 

__

地方到全球範圍

var count1; 
var count2; 
audiofiles.find(),function(err,res){ 
       console.log(res.length); 
       count1 = res.length; 
      } 
      videofiles.find(),function(err,res){ 
       console.log(res.length); 
       count2 = res.length; 
      } 
      var totalcount = parseInt(parseInt(count1)+parseInt(count2)); 
      console.log(totalcount); 

注:這是過於冗長,但它應該工作。希望..

+1

感謝您的回覆..但我需要首先獲取局部變量count1&count2,如何獲取它? – Jagadeesh

+0

預先聲明count1和count2在範圍之外。就像它們在當地所處的功能之外。進入'全球範圍'。 – Jamin

0

使用count()方法返回集合中文檔的數量。由於它是一種異步方法,因此您可以使用異步庫來獲取 這兩個調用返回的結果的總和,或者您可以使用承諾。

考慮爲node-async包,其中包括多個功能用於與這樣的情況下處理,使用瀑布API用例:

var totalcount; 
async.waterfall([ 
    function (callback) { 
     audiofiles.count({}, function(err, res) { 
      if (err) { 
       return callback(err); 
      } 
      callback(res); 
     }); 
    }, 
    function(count1, callback){ 
     videofiles.count({}, function(err, count2) { 
      if (err) { 
       return callback(err); 
      } 
      totalcount = count1 + count2; 
      callback(null, totalcount); 
     }); 
    } 
], function (err, result) { 
    if (err) throw err; 
    console.log(result); // result = totalcount 
}); 

或者使用承諾

var totalcount, 
    count1 = audiofiles.count(), 
    count2 = videofiles.count(); 

Promise.all([count1, count2]) 
    .then(function (counts) { 
     function add(a, b) { return a + b; }; 
     totalcount = counts.reduce(add, 0); 
     console.log(totalcount); 
    }) 
    .catch(function (err) {}) 

沒有上面的,嵌套的異步調用(不建議,因爲它可能會創建回調地獄):

var totalcount; 
audiofiles.count({}, function(err, count1) { 
    if (err) throw err; 
    videofiles.count({}, function(err, count2) { 
     if (err) throw err; 
     totalcount = count1 + count2; 
     console.log(totalcount); 
    }) 
}) 
相關問題