如何将mongoDB对象传递给Javascript / JS.Node中的所有原型函数?

我正在使用NodeJS和MongoDB一起,并将mongoDB对象传递给我所有的原型函数。 我不明白如何在这些原型之间传递这个对象。 也许有人能指出我正确的方向?

在我的主文件中,我创build了一个新的mongoDB对象实例,其中包含了我想用于使用mongoDB的所有原型。 然后我使用原型函数来连接并创build一个新的集合。

Main.js var mongo = require('./database/mongoDB') var mongoDB = new mongo(); // Connect to database mongoDB.ConnectDB(dbPath); // Create a collection mongoDB.CreateNewCollection("Usernames"); 

原型函数在MongoDB.js中定义

 MongoDB.js // Get mongoDB var mongoDB = require('mongodb').MongoClient; var DatabaseOperations = function () {}; // Constructor DatabaseOperations.prototype.ConnectDB = function(dbPath){ // Connect to database mongoDB.connect(dbPath, function(err, mongoDatabase) { if(!err) { console.log("Connected to database: " + dbPath); mongoDB.database = mongoDatabase; } else { console.log("Could not connect to database, error returned: " + err); } }); } DatabaseOperations.prototype.CreateNewCollection = function(collectionName){ mongoDB.database.createCollection(collectionName, function(err, collectionName){ if(!err) { console.log("Successfully setup collection: " + collectionName.Username); mongoDB.collectionName = collectionName; } else { console.log("Could not setup collection, error returned: " + err); } }); } 

我能够连接到数据库,但从那里,我不知道如何将数据库对象传递给其他原型function,以创build一个集合或做任何事情与它。 运行时得到的错误消息是这样的:

 mongoDB.database.createCollection(collectionName, function(err, collection TypeError: Cannot read property 'createCollection' of undefined 

我如何获得数据库对象到每个原型函数来使用它?

我发现你find了一个替代解决scheme,但我要评论。 在构造函数中,你应该做类似的事情

 MongoDB.js // Get mongoDB var mongoDB = require('mongodb').MongoClient; var DatabaseOperations = function () {}; // Constructor DatabaseOperations.prototype.ConnectDB = function(dbPath){ // Connect to database var that = this; mongoDB.connect(dbPath, function(err, mongoDatabase) { if(!err) { console.log("Connected to database: " + dbPath); that.database = mongoDatabase; } else { console.log("Could not connect to database, error returned: " + err); } }); } DatabaseOperations.prototype.CreateNewCollection = function(collectionName){ this.database.createCollection(collectionName, function(err, collectionName){ if(!err) { console.log("Successfully setup collection: " + collectionName.Username); } else { console.log("Could not setup collection, error returned: " + err); } }); } 

这样,您将数据库分配给DatabaseOperations,并且DatabaseOperations的每个原型函数都将通过此数据库访问它。 数据库现在是该对象的一个​​属性。 一般来说,不同的函数只能看到分配给“this”(DatabaseOperations)的东西。

我结束了使用mongoskin作为我的Mongo数据库的驱动程序。 通过使用mongoskin,我可以在我的原型函数中获得一个有效的mongodb对象来处理我的集合: http : //www.hacksparrow.com/mongoskin-tutorial-with-examples.html

Interesting Posts