微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 如何在nodejs中同步连接到mongodb

我想利用promises功能,我可以同步连接到 mongodb,我可以通过将连接传递给不同的模块来重用连接.

这是我想出来的东西

class MongoDB {

    constructor(db,collection) {      
      this.collection = db.collection(collection);
    }

    find(query,projection) {
        if(projection)
            return this.collection.find(query,projection);
        else
            return this.collection.find(query);
    }
}

class Crew extends MongoDB {

    constructor(db) {        
        super(db,'crews');
    }

    validate() {

    }
}

我想在我的初始代码中的某个位置设置一个连接,如下面的那个,然后重用不同类的连接,就像mongoose或monk那样,但只使用node-mongodb-native包.

MongoClient.connect(url)
          .then( (err,dbase) => {
                global.DB = dbase;
              });


var Crew = new CrewModel(global.DB);


Crew.find({})
   .then(function(resp) {
      console.log(resp);
   });

现在,db在主MongoDB类中返回undefined,并且无法通过谷歌或文档调试这个.

编辑:我曾假设承诺是同步的但事实并非如此.

解决方法

要重用连接,我会创建一个这样的模块.
module.exports = {

    connect: function(dbname,callback ) {
       MongoClient.connect(dbname,function(err,db) {

       _db = db;
       return callback( err );
    });
},getDb: function() {
        return _db;
     }
};

之后,您可以在启动应用程序之前连接到数据库

MongoConnection.connect("mongodb://localhost:27017/myDatabase",function(err){
    app.listen(3000,function () {
        // you code
    });
});

考虑到您在js文件中创建了模块,您只需使用require来获取databaseConnection

var dbConnection = require("./myMongoConnection.js");

并获得连接使用

var db = MongoConnection.getDb();

原文地址:https://www.jb51.cc/nodejs/241067.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐