2013-01-06 77 views
11

我試過使用findfindOne並且兩者都沒有返回文檔。 find正在返回空數組,而findOne正在返回nullerr在這兩種情況下也在nullMongoose總是返回一個空的數組NodeJS

這裏是我的連接:

function connectToDB(){ 
    mongoose.connect("mongodb://localhost/test"); //i have also tried 127.0.0.1 
    db = mongoose.connection; 
    db.on("error", console.error.bind(console, "connection error:")); 
    db.once("open", function callback(){ 
     console.log("CONNECTED"); 
    }); 
};

這裏是我的架構:

var fileSchema = mongoose.Schema({ 
    hash: String, 
    type: String, 
    extension: String, 
    size: String, 
    uploaded: {type:Date, default:(Date.now)}, 
    expires: {type:Date, default:(Date.now()+oneDay)} 
}); 
var Model = mongoose.model("Model", fileSchema);

而且我的查詢是在這裏:

Model.find({},function(err, file) { 
    console.log(err) 
    console.log(file); 
});

我可以上傳東西到數據庫,看看他們通過RockMongo但我無法取回他們後。這是我第一次使用MongoDB,所以我想我只是缺少一些基礎知識。任何推動正確的方向將是偉大的!

+0

什麼您是通過RockMongo看到文檔的集合的名稱? – JohnnyHK

+0

所有信息都在測試集合'文件中 – locrizak

回答

34

mongoose.model的調用會建立模型綁定到的集合的名稱,默認值爲pluralized,下裝型號名稱。所以用你的代碼,那將是'models'。要使用與files集合的模式,改變該行:

var Model = mongoose.model("Model", fileSchema, "files"); 

var Model = mongoose.model("file", fileSchema); 
+3

美麗,非常感謝。我很驚訝沒有一個我一直遵循的教程已經提到過。 – locrizak

+4

保存了一天。非常感謝!遺憾的是這並未在官方指南中突出顯示。 – thameera

+0

@thameera在這裏相同。我正在從.net土地進入未知的水域,我浪費了很多時間在這個地方。救星。是的,至少在我的搜索嘗試中,似乎沒有提及慣例。謝謝!!! – scniro