2013-01-06 15 views
11

J'ai essayé d'utiliser find et findOne et les deux ne retournent pas un document. find renvoie un tableau vide tandis que findOne renvoie null. err dans les deux cas dans null ainsi.Mongoose renvoyant toujours un tableau vide NodeJS

Voici ma connexion:

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

moi Voici le schéma:

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

Et ma question est ici:

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

je peux télécharger des choses à la base de données et de voir eux par RockMongo mais je ne peux pas les chercher après. C'est la première fois que j'utilise MongoDB, donc je pense que je manque juste quelques principes fondamentaux. Toute poussée dans la bonne direction serait géniale!

+0

Ce que le nom de la collection que vous voyez des documents via RockMongo? – JohnnyHK

+0

Toutes les informations sont dans une collection 'fichiers' sous test – locrizak

Répondre

34

L'appel à mongoose.model établit le nom de la collection à laquelle le modèle est associé, la valeur par défaut étant le pluralized, nom de modèle inférieur. Donc, avec votre code, ce serait 'models'. Pour utiliser le modèle avec la collection files, changer cette ligne à:

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

ou

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

Beautiful, Merci beaucoup. Je suis surpris qu'aucun des tutoriels que j'ai suivi ne l'ait mentionné. – locrizak

+4

Enregistré le jour. Merci beaucoup! C'est dommage que cela ne soit pas mis en évidence dans le guide officiel. – thameera

+0

@thameera même ici. Je me déplace dans des eaux inexplorées à partir de terres .net et j'ai perdu beaucoup de temps sur celui-ci. Lifesaver. Oui, la convention ne semble pas être mentionnée _anywhere_, au moins dans mes tentatives de recherche. Je vous remercie!!! – scniro