如何使用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使用复数的模型来命名集合,抱歉我的英文…