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

前端之家收集整理的这篇文章主要介绍了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();

猜你在找的Node.js相关文章