使用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);
})
})
感謝您的回覆..但我需要首先獲取局部變量count1&count2,如何獲取它? – Jagadeesh
預先聲明count1和count2在範圍之外。就像它們在當地所處的功能之外。進入'全球範圍'。 – Jamin