Javascript 导出的变量未定义,而函数在节点js中导出
我正在创建使用mongodb的nodejs应用程序 我只连接到mongodb一次。我想在所有其他api中使用Javascript 导出的变量未定义,而函数在节点js中导出,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在创建使用mongodb的nodejs应用程序 我只连接到mongodb一次。我想在所有其他api中使用db,以实现连接池 我有以下mongodb连接代码: var mongodb = require('mongodb'); var MongoClient = require('mongodb').MongoClient; var db; var mongoUrl = "mongodb://localhost:27017/testDB"; /** * Connects to the M
db
,以实现连接池
我有以下mongodb连接代码:
var mongodb = require('mongodb');
var MongoClient = require('mongodb').MongoClient;
var db;
var mongoUrl = "mongodb://localhost:27017/testDB";
/**
* Connects to the MongoDB Database with the provided URL
*/
exports.connect = function(callback){
if(!db){
MongoClient.connect(mongoUrl, function(err, _db){
if (err) { throw new Error('Could not connect: '+err); }
db = _db;
console.log(db);
connected = true;
console.log(connected +" is connected?");
callback(db);
});
}else{
console.log("Not connected tis time as I am already connected");
callback(db);
}
};
exports.db = db;
当服务器从app.js
启动时,我只调用connect
一次。每当调用其他api(如signin,register
)时,它们应该只使用导出的db
因此,我的api调用类似(请忽略api调用中的语法错误:D):
在其他stackoverflow帖子中,我尝试了类似于mongo.js的东西
module.export{
db: db,
connect : function(callback){
//function code goes here
}
}
但是我仍然得到了mongo.db的未定义的
如何访问其他文件中的mongo.db?
谢谢发生这种情况的原因是,connect会覆盖模块中的db
。exports.db=db调用connect
函数后,不会执行code>,而是在执行模块导入时执行
因此,当您调用connect
时,db被设置为另一个变量,但它不会暴露在外部
最近没有做太多JS,但这应该可以做到:
module.exports = new mongobj();
function mongobj() {
this.db = null;
this.connect = function(callback) { /* your connect code set mongobj.db */
this.db = /* new value */ ;
}
}
导入模块时,将获得对象。访问对象db
属性将始终显示模块的connect
功能设置的最新db
值
var mongo = require('yourmodule');
// mongo.db is null
mongo.connect(some callback);
// mongo.db is set
发生这种情况的原因是,connect会覆盖模块中的db
。exports.db=db调用connect
函数后,不会执行code>,而是在执行模块导入时执行
因此,当您调用connect
时,db被设置为另一个变量,但它不会暴露在外部
最近没有做太多JS,但这应该可以做到:
module.exports = new mongobj();
function mongobj() {
this.db = null;
this.connect = function(callback) { /* your connect code set mongobj.db */
this.db = /* new value */ ;
}
}
导入模块时,将获得对象。访问对象db
属性将始终显示模块的connect
功能设置的最新db
值
var mongo = require('yourmodule');
// mongo.db is null
mongo.connect(some callback);
// mongo.db is set
定义对象:
var db = {__db: undefined}
然后:
exports.db = db
const db = require('./mongo').db.__db
定义对象:
var db = {__db: undefined}
然后:
exports.db = db
const db = require('./mongo').db.__db
此连接加载项主脚本文件
var mongodb = require('mongodb');
var mongodb = require('mongodb');
var MongoClient = require('mongodb').MongoClient;
var mongoUrl = "mongodb://localhost:27017/testDB";
ObjectId = module.exports = require("mongojs").ObjectId;
MongoClient.connect(mongoUrl, function(err, database){
if(err){
console.log("mongodb error >>"+err);
} else {
db = module.exports = database;
}});
db.collection('game_users').findOne({_id:ObjectId("123456789")},function(err, data) {});
此连接加载项主脚本文件
var mongodb = require('mongodb');
var mongodb = require('mongodb');
var MongoClient = require('mongodb').MongoClient;
var mongoUrl = "mongodb://localhost:27017/testDB";
ObjectId = module.exports = require("mongojs").ObjectId;
MongoClient.connect(mongoUrl, function(err, database){
if(err){
console.log("mongodb error >>"+err);
} else {
db = module.exports = database;
}});
db.collection('game_users').findOne({_id:ObjectId("123456789")},function(err, data) {});
那么我如何获得更新的值呢?是否有办法或不可能?如何获得更新值?有办法还是不可能