0

我正在使用的脚本在这里:https ://gist.github.com/2759751

我想修改一些代码以将来自 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!');
        }); 
    });
//});
}
4

1 回答 1

1

db.open 接受这样的回调

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

一旦您建立了连接并且可以继续使用,只要 db 变量在范围内,您的 saveRecs 函数就可以调用。

于 2012-05-20T23:00:40.700 回答