2013-10-28 17 views
7

Ho appena iniziato ad imparare MongoDB e mangusta. Attualmente ho la seguente struttura:Come ottenere dati da MongoDb usando mangusta?

database -> skeletonDatabase 
collection -> adminLogin 

Quando eseguo db.adminLogin.find() dalla riga di comando ottengo:

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

La mia connessione(questo funziona, basta aggiungerla 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'); 
    }); 
} 

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

miei console.log() ritorna come >>>>

Così che cosa sto facendo male qui? Perché non ottengo alcun dato nel log della mia console? Grazie in anticipo per qualsiasi aiuto.

risposta

19

mangusta di default prende nomi di modelli singolari e li accoppia con una raccolta denominata con il plurale di quello, quindi mangusta sta cercando nel db per una raccolta denominata "adminLogins" che non esiste. È possibile specificare il nome di raccolta come il secondo argomento quando si definisce lo schema:

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

È un anti-funzionalità terribile. Penso di aver visto parlare di github di interromperlo in alcune versioni future. Se stai usando express, 'res.send (data)' per inviarlo al browser e il gioco è fatto. –

+1

Bello sapere, sì sto usando express. Ma anch'io sono un po 'annebbiato. Ho provato a usare 'res.send (data)', ma non riuscivo a capire come avrebbe dovuto funzionare l'intera soluzione. Ho il mio app.configure globale insieme alla mia connessione mangusta. Quindi sto usando 'require()' ma non sono sicuro di come passare una richiesta attraverso di essa. –

+0

Grazie a @PeterLyons, funziona perfettamente .. Grazie ancora :) –

0

prima compilazione solo una modello con lo schema come argomento

var adminLogin = mongoose.model('adminLogin', adminLogin);

nel ADMINLOGIN codice non lo fa esiste, adminLoginModel fa;

dopo che, invece

adminLogin.find({}, function(err, data){ 
     console.log(">>>> " + data); 
    }); 

provare questo

adminLogin.find(function (err, adminLogins) { 
    if (err) return console.error(err); 
    console.log(adminLogins); 

è importante la "s" perché Mongo usano il plurale del modello di nominare la raccolta, mi dispiace per il mio inglese ..

Problemi correlati