javascript - NodeJS og node-mongodb-native
Er lige begyndt med Node og prøver at få Mongo-driveren til at fungere. Jeg har sat min forbindelse op, og mærkeligt nok kan jeg indsætte ting uden problemer, men at kalde find på en samling giver vanvid.
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));
});
});
});
});
Hvis jeg fjerner kommentaren fra indsætningen og kommenterer søgningen ud, fungerer det fantastisk. Den omvendte situation holder desværre ikke, jeg får denne fejl:
collection.find({}, null, function(err, cursor) {
^
TypeError: Cannot call method 'find' of null
Jeg er sikker på, at jeg gør noget fjollet, men for livet kan jeg ikke finde det...
Svar #1
Jeg fik det samme lige nu. Jeg indså, at db.collection bliver kaldt igen og igen af en eller anden grund, så jeg gjorde noget i stil med dette (hakkede lidt i din kode):
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));
});
});
}
Jeg er klar over, at du spurgte om dette for 9 måneder siden. Håber dette gravearbejde stadig hjælper nogen. Held og lykke!
Svar #2
prøv at kalde collection.save() efter dit indsæt for at tømme din række.
tag et kig på http://www.learnboost.com/mongoose/
"I øjeblikket understøtter Mongoose kun manuel udtømning af data til serveren."
