2010-06-17 71 views
6

刚刚开始使用节点,并试图让mongo驱动程序 工作。我已经建立了连接,奇怪的是我可以插入东西 就好了,但是在集合上调用查找会产生疯狂。NodeJS和节点mongodb本地

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

    }); 
}); 

如果我取消注释插入并注释掉查找,它会起作用。 逆遗憾的是不成立的,我收到此错误:

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

我知道我在做一些愚蠢的,但对我的生活,我不能 找到它...

+0

我想这意味着你得到一个错误。 你可以检查'err'值吗? – Fopfong 2010-06-18 05:21:00

+0

另外,我认为你使用时,当你使用 新mongo.Db('东西'...' '东西'是数据库名称不是一个集合 我不确定这是否导致问题 – Fopfong 2010-06-18 05:27:20

回答

-2

尝试在插入之后调用collection.save()以刷新行。

看看http://www.learnboost.com/mongoose/

“猫鼬目前只支持数据传输到服务器的手动冲洗。”

+5

'猫鼬! = node-mongodb-native' – s4y 2010-12-02 03:02:03

9

刚才我得到了同样的结果。我意识到,db.collection被称为一遍又一遍由于某种原因,所以我做了这样的事情(在你的代码劈砍而去):

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

我知道你10个月前问这个。希望这个严重的挖掘仍然有助于某人。祝你好运!

+0

它帮助我,谢谢! – 2011-04-26 09:43:05

+0

+1帮助了我,非常棘手。 – 2012-05-04 02:52:53