2013-01-06 25 views
11

Próbowałem użyć find i findOne i oba nie zwracają dokumentu. find zwraca pustą tablicę, gdy findOne powraca null. err również w obu przypadkach: null.Mongoose zawsze zwraca pustą tablicę NodeJS

Oto moja gra:

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"); 
    }); 
};

Oto mi schematu:

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);

I moje zapytanie jest tutaj:

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

mogę przesłać rzeczy do bazy danych i zobaczyć je przez RockMongo, ale nie mogę ich później pobrać. Po raz pierwszy korzystam z MongoDB, więc myślę, że po prostu brakuje mi podstaw. Każde pchnięcie we właściwym kierunku byłoby świetne!

+0

Co nazwa kolekcji widzisz dokumentów poprzez RockMongo? – JohnnyHK

+0

Wszystkie informacje znajdują się w zbiorze 'pliki' w ramach testu – locrizak

Odpowiedz

34

Wywołanie mongoose.model określa nazwę kolekcji, do której jest przypisany model, przy czym domyślną nazwą jest pluralized, nazwa modelu z małym wyborem liter. Z twoim kodem będzie to 'models'. Aby użyć modelu z kolekcji files zmienić tej linii do:

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

lub

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

Piękne, Dziękuję bardzo. Jestem zaskoczony, że żaden z tutoriali, które obserwowałem, nie wspomniał o tym. – locrizak

+4

Uratowałem dzień. Wielkie dzięki! Szkoda, że ​​nie jest to podświetlone w oficjalnym przewodniku. – thameera

+0

@thameera same tutaj. Wchodzę na niezbadane wody z krainy .net i marnowałem tyle czasu na tę. Ratownik. Tak, konwencja nie wydaje się być wspominana gdziekolwiek indziej, przynajmniej w moich próbach wyszukiwania. Dziękuję Ci!!! – scniro