2010-06-17 19 views
6

Appena iniziato con il nodo e cercando di far funzionare il driver mongo . Ho impostato la connessione, e stranamente posso inserire le cose bene, tuttavia chiamare la ricerca su una raccolta produce follia.NodeJS e node-mongodb-native

var db = new mongo.Db('things', new mongo.Server('192.168.2.6',mongo.Connection.DEFAULT_PORT, {}), {}); 

db.open(function(err, db) { 
    db.collection('things', function(err, collection) { 
//   collection.insert(row); 
     collection.find({}, null, function(err, cursor) { 
      cursor.each(function(err, doc) { 
       sys.puts(sys.inspect(doc,true)); 
      }); 
     }); 

    }); 
}); 

Se annullo l'inserto e commento la ricerca, funziona. L'inverso, purtroppo, non regge, ricevo questo errore:

 collection.find({}, null, function(err, cursor) { 
      ^
TypeError: Cannot call method 'find' of null 

Sono sicuro che sto facendo qualcosa di sciocco, ma per la vita di me non riesco a trovarlo ...

+0

Penso che questo significhi avere un errore. Puoi controllare il valore 'err'? – Fopfong

+0

Inoltre, penso che si usi quando si utilizza nuovo mongo.Db ('cose' ... 'cose' è il nome DB non è una raccolta Non sono sicuro che questo causi il problema o no – Fopfong

risposta

-2

prova a chiamare collection.save() dopo l'inserimento per svuotare la riga.

un'occhiata a http://www.learnboost.com/mongoose/

"Attualmente Mongoose supporta solo risciacquo manuale dei dati al server."

+5

'Mangusta! = node-mongodb-native' – s4y

9

Ho avuto la stessa cosa solo ora. Mi resi conto che db.collection è chiamata più e più volte per qualche motivo, così ho fatto qualcosa di simile (a smanettare sul vostro codice):

var db = new mongo.Db('things', new mongo.Server('192.168.2.6',mongo.Connection.DEFAULT_PORT, {}), {}); 

    var Things;  

    db.open(function(err, db) { 
     db.collection('things', function(err, collection) { 
      Things = Things || collection;  
    }); 

    var findThings = function() { 
     Things.find({}, null, function(err, cursor) { 
      cursor.each(function(err, doc) { 
       sys.puts(sys.inspect(doc,true)); 
      }); 
     }); 
    } 

Mi rendo conto che lei ha chiesto questo 9 mesi fa. Spero che questa tomba diggin aiuti ancora qualcuno. In bocca al lupo!

+0

Mi ha aiutato, grazie! –

+0

+1 mi ha aiutato. Molto difficile. –