【问题标题】:Saving node.js stream to mongodb - how to properly connect?将 node.js 流保存到 mongodb - 如何正确连接?
【发布时间】:2023-04-09 08:16:01
【问题描述】:

我正在使用的脚本在这里: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!');
        }); 
    });
//});
}

【问题讨论】:

    标签: node.js mongodb socket.io


    【解决方案1】:

    db.open 接受这样的回调

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2019-10-15
      • 2014-01-08
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多