.connect()中回调的范围(nodejs,mongodb)

时间:2015-01-24 11:50:33

标签: node.js mongodb

我试图使用全局数据库对象来处理我的nodejs服务器上的数据。它应包含所有连接用户的所有数据。随时可以从ram中访问。

因此我创建了一个模块:

function Database() {
var MongoClient = require('mongodb').MongoClient;
this.dbcon; //database connection

// Connect to the db
MongoClient.connect("mongodb://localhost:27017/dbname", this.givedatabasevars);
};

因为我想重新使用数据库连接而不是每次我想使用回调函数访问我的对象的属性时打开新的连接并给它们连接对象:

Database.prototype.givedatabasevars = function(err, getdbcon) {
if(err) {console.log(err)};
this.dbcon = getdbcon; //not working(scoped changed when used as callback?)
db.dbcom = getdbcon; //also not working(db object maybe not there yet as its a callback in constructor?)

};

我使用这个globaly创建对象:

var Database = require('./node_modules/database/database.js');
var db = new Database();

现在我对nodejs和javascript都很新。我试图了解如何访问对象范围,但是从回调中我甚至无法访问全局范围。

这甚至可能吗? 使用.find()和回调时,如何处理数据也是一样的。如何从我的应用程序中获取数据?我需要存储它,而不是直接使用它。

此致 迈克尔

1 个答案:

答案 0 :(得分:0)

您可以使用global变量访问全局对象。在普通文件上执行console.log(this)以查看所有全局变量。

对于mongodbmafintosh/mongojs可能会为您提供更可共享的界面。事实上,我认为你甚至不需要全球化;)