Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导出的变量未定义,而函数在节点js中导出_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 导出的变量未定义,而函数在节点js中导出

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

我正在创建使用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 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=dbconnect
函数后,不会执行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=dbconnect
函数后,不会执行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) {});

那么我如何获得更新的值呢?是否有办法或不可能?如何获得更新值?有办法还是不可能