如何使用mongoose从MongoDb获取数据?

我刚开始学习MongoDB和mongoose。 目前我有以下结构:

database -> skeletonDatabase collection -> adminLogin 

当我从命令行运行db.adminLogin.find() ,我得到:

 { "_id" : ObjectId("52lhafkjasfadsfea"), "username" : "xxxx", "password" : "xxxx" } 

我的连接 (这个工作,只是加上FYI)

 module.exports = function(mongoose) { mongoose.connect('mongodb://localhost/skeletonDatabase'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function callback () { console.log('Conntected To Mongo Database'); }); } 

我的-js-

 module.exports = function(mongoose) { var Schema = mongoose.Schema; // login schema var adminLogin = new Schema({ username: String, password: String }); var adminLoginModel = mongoose.model('adminLogin', adminLogin); var adminLogin = mongoose.model("adminLogin"); adminLogin.find({}, function(err, data){ console.log(">>>> " + data ); }); } 

我的console.log()返回为>>>>

那么我在这里做错了什么? 为什么我的控制台日志中没有任何数据? 在此先感谢您的帮助。

mongoose在默认情况下需要奇异的模型名称,并将它们与以复数名称命名的集合配对,所以mongoose在db中寻找一个名为“adminLogins”的集合,这个集合不存在。 在定义模式时,您可以指定您的集合名称作为第二个参数:

 var adminLogin = new Schema({ username: String, password: String }, {collection: 'adminLogin'}); 

首先以模式作为参数编译一个模型

var adminLogin = mongoose.model('adminLogin', adminLogin);

在你的代码中adminLogin不存在,adminLoginModel呢;

之后,而不是

 adminLogin.find({}, function(err, data){ console.log(">>>> " + data ); }); 

尝试这个

 adminLogin.find(function (err, adminLogins) { if (err) return console.error(err); console.log(adminLogins); 

“s”是重要的,因为mongo使用复数的模型来命名集合,抱歉我的英文…