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

Kri*_*eck 9 javascript mongoose mongodb node.js express

我刚开始学习MongoDB和猫鼬.目前我有以下结构:

database   -> skeletonDatabase
collection -> adminLogin
Run Code Online (Sandbox Code Playgroud)

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

{ "_id" : ObjectId("52lhafkjasfadsfea"), "username" : "xxxx", "password" : "xxxx" }
Run Code Online (Sandbox Code Playgroud)

我的连接 (这很有效,只需添加它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');
    });
}
Run Code Online (Sandbox Code Playgroud)

我的-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 );
    });
}
Run Code Online (Sandbox Code Playgroud)

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

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

Pet*_*ons 24

mongoose默认使用单个模型名称并将它们与以其复数命名的集合配对,因此mongoose在db中查找名为"adminLogins"的集合,该集合不存在.在定义架构时,可以将集合名称指定为第二个参数:

var adminLogin = new Schema({
    username: String,
    password: String
}, {collection: 'adminLogin'});
Run Code Online (Sandbox Code Playgroud)

  • 这是一个可怕的反特征.我想我已经在github上看到了在未来的某个版本中停止它的话题.如果你使用express,`res.send(data)`将它发送到浏览器,你就完成了. (2认同)