2012-05-20 96 views
0

我一起工作的脚本是在这里:https://gist.github.com/2759751将node.js流保存到mongodb - 如何正确连接?

我想修改一些代码来存储数据流,解析的消息从node.js的应用到MongoDB的集合以后访问。到目前为止,我正在使用教程代码,并对db.open()机制恰到好处,如果我使用db.open()感到困惑,并且因为它是一个流,它会抱怨它无法多次打开它。如果我删除它,它说它找不到打开的连接。如何打开连接一次以允许存储流?

我实例MONGO有:

mongo = require('mongodb'), 
    db = new mongo.Db('wikis', new mongo.Server('localhost', 27017, {}), {}); 

流踢出这样的对象:

return { 
    flag: flag, 
    page: page, 
    pageUrl: pageUrl, 
    url: m[3], 
    delta: delta, 
    comment: m[6], 
    wikipedia: wikipedia, 
    wikipediaUrl: wikipediaUrl, 
    wikipediaShort: config.wikipedias[msg[0]].short, 
    wikipediaLong: config.wikipedias[msg[0]].long, 
    user: user, 
    userUrl: userUrl, 
    unpatrolled: isUnpatrolled, 
    anonymous: anonymous, 
    robot: isRobot, 
    namespace: namespace, 
    minor: isMinor 

} 

我想存储数据流的部分是这样的:

function saveRecs(msg){ 
//db.open(function(){ 

    db.collection('wikiCollection', function(err, collection){ 
     doc = { 
      "page": msg.page, 
      "url": msg.url, 
      "user": msg.user 
     }; 

     collection.insert(doc, function(){ 
      console.log('Got a record, boss!'); 
     }); 
    }); 
//}); 
} 

回答

1

db.open需要这样的回调

dbOpenCallback(err, db){ 
    // Check if err is set to anything other wise you are good 
} 
//... 
db.open(dbOpenCallback); 

建立连接后,打开并确定,只要db变量在范围内,saveRecs函数就可以调用。