2011-06-07 115 views
3

我想構建一個包裝數據庫連接的類。這是我的代碼( 'db.js' 文件):連接數據庫時發生錯誤(mongo和nodejs)

var mongodb = require('mongodb'); 

var Class = function() { 
    this.db = null; 
    var server = new mongodb.Server('127.0.0.1', 27017, {auto_reconnect: true}); 
    db = new mongodb.Db('myDB', server); 
    db.open(function(error, db) { 
    if (error) { 
     console.log('Error ' + error); 
    } else { 
     console.log('Connected to db.'); 
     this.db = db; 
    } 
    }); 
}; 

module.exports = Class; 

Class.prototype = { 
    getCollection: function(coll_name) { 
    this.db.collection(coll_name, function(error, c){ // <--- see error below 
     return c; 
    }); 
    } 
} 

exports.oid = mongodb.ObjectID; 

然後,我的測試代碼( 'test.js' 文件):

var DB = require('./db'); 
var myDB = new DB(); 
myDB.getCollection('myCollection'); // <--- error: Cannot call method 'collection' of null 
+0

您的測試文件的第2行是否打印「連接到數據庫」? – 2011-06-08 16:54:43

回答

1

你缺少前面的 「這個」 「D b」。例如:

this.db = new mongodb.Db('myDB', server); 

和旁邊的行。