我將NodeJS和MongoDB一起使用,並將mongoDB對象傳遞給我的所有原型函數時遇到了一些問題。我不明白如何在這些原型之間傳遞這個對象。也許有人可以指出我正確的方向?如何將mongoDB對象傳遞給Javascript/JS.Node中的所有原型函數?
在我的主文件中,我創建了一個新的mongoDB對象實例,其中包含我想用於使用mongoDB的所有原型。然後我使用原型函數來連接並創建一個新的集合。
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);
}
});
}
我能夠連接到數據庫,但是從那裏,我不知道如何通過數據庫對象的其他功能樣機爲了創建一個集合或做任何其他的事情。我運行它時得到的錯誤消息是:
mongoDB.database.createCollection(collectionName, function(err, collection
TypeError: Cannot read property 'createCollection' of undefined
如何將數據庫對象放入每個原型函數中以使用它?
在'mongoDB.connect'的異步回調執行之前,您是否調用'DatabaseOperations.prototype.CreateNewCollection'? –
嗨帕特里克,不,我沒有在回調之前調用它,我在調用CreateNewCollections原型之後首先調用mongoDB.connect()。我嘗試在mongoDB.database中保存名爲mongoDatabase的新數據庫對象,但是從那裏開始,我無法通過全局變量訪問它,也沒有通過將值返回給main.js並將其作爲參數傳遞給CreateNewCollections.prototype ... – Benny