2013-10-28 69 views
7

我剛開始學習MongoDB和貓鼬。目前,我有以下結構:如何使用貓鼬從MongoDb獲取數據?

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

我的連接(這個工程,只是將它添加FYI)

database -> skeletonDatabase 
collection -> adminLogin 

當我在命令行中我得到的運行db.adminLogin.find()

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()收益爲>>>>

所以我在做什麼錯在這裏?爲什麼我的控制檯日誌中沒有任何數據?預先感謝您的幫助。

回答

19

貓鼬默認情況下需要奇異的模型名稱,並將它們與以複數名稱命名的集合配對,所以貓鼬在數據庫中尋找一個名爲「adminLogins」的集合,該集合不存在。與架構

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

這是一個可怕的反功能。我想我已經在github上看到了在未來發布的版本中停止使用它。如果你使用express,'res.send(data)'把它發送到瀏覽器,你就完成了。 –

+1

很高興知道,是的,我使用快遞。但我也有點模糊。我嘗試使用'res.send(data)',但無法安靜地弄清楚整個響應是如何工作的。我有我的app.configure全球連同我的貓鼬連接。所以我使用'require()',但不知道如何通過它傳遞請求。 –

+0

謝謝@PeterLyons,它的工作完美..再次感謝:) –

0

第一隻編譯一個模型作爲參數

var adminLogin = mongoose.model('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」 .. 。