MongoDB使用Node.js获取集合中文档的数量(计数)

我目前正在写一个函数,应该返回一个集合文件的数量,当我返回的值说undefined,这是我的代码:

var MongoClient = require('mongodb').MongoClient; // open the connection the DB server var dbName = "ystocks"; var port = "27017"; var host = "localhost"; var tt = "mongodb://" + host + ":" + port + "/" + dbName; //"mongodb://localhost:27017/ystocks" function getNumOfDocs (collectionName, host, port, dbName) { var tt = "mongodb://" + host + ":" + port + "/" + dbName; count = 0; MongoClient.connect(tt, function (error, db){ if(error) throw error; collectionName = collectionName; db.collection(collectionName).count({}, function(error, numOfDocs){ if (error) throw error; //print the result console.dir("numOfDocs: " + numOfDocs); count = numOfDocs; console.log("count is : " + count); // close the DB return numOfDocs; db.close(); });// end of count }); // Connection to the DB //return count; } // end of getNumOfDocs var ee = getNumOfDocs ("stocks", "localhost", "27017", "ystocks"); console.log("ee is " + ee); 

请帮帮我。

       

网上收集的解决方案 "MongoDB使用Node.js获取集合中文档的数量(计数)"

这是应该的样子

 var MongoClient = require('mongodb').MongoClient; var dbName = "ystocks"; var port = "27017"; var host = "localhost"; function getNumOfDocs (collectionName, host, port, dbName, callback) { MongoClient.connect("mongodb://" + host + ":" + port + "/" + dbName, function (error, db){ if(error) return callback(error); db.collection(collectionName).count({}, function(error, numOfDocs){ if(error) return callback(error); db.close(); callback(null, numOfDocs); }); }); } 

和用法

 getNumOfDocs("stocks", host, port, dbName, function(err, count) { if (err) { return console.log(err.message); } console.log('number of documents', count); }); 

请记住,如果你打算多次调用这个函数,最好连接数据库一次,并使用相同的连接。