javascript - NodeJS og node-mongodb-native
Bare kommet i gang med Node, og prøver å få Mongo-driveren til å fungere. Jeg har satt opp tilkoblingen min, og merkelig nok kan jeg sette inn ting uten problemer, men det å kalle find på en samling gir galskap.
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 innsettingen og kommenterer ut søket, fungerer det utmerket. Den motsatte fremgangsmåten gjelder dessverre ikke, jeg får denne feilen:
collection.find({}, null, function(err, cursor) {
^
TypeError: Cannot call method 'find' of null
Jeg er sikker på at jeg gjør noe dumt, men for livet kan jeg ikke finne det...
Svar #1
Jeg fikk det samme akkurat nå. Jeg innså at db.collection blir kalt om og om igjen av en eller annen grunn, så jeg gjorde noe sånt som dette (hakker litt på koden din):
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 innser at du spurte dette for 9 måneder siden. Håper dette gravarbeidet fortsatt hjelper noen. Lykke til!
Svar #2
prøv å kalle collection.save() etter innsettingen din for å tømme raden din.
ta en titt på http://www.learnboost.com/mongoose/
"For øyeblikket støtter Mongoose bare manuell utskylling av data til serveren."
