仍然无法将一个Openshift应用程序连接到另一个Openshift应用程序的MongoDB数据库

遵循这里提出的build议:

(OpenShift)在应用程序之间共享MongoDB不可能了吗?

简而言之就是这个 – >“您需要创build应用程序作为可扩展的,然后添加MongoDB为它正常工作。然后MongoDB将自己的装备,它自己的IP地址和端口号(记住使用这个端口号,或者什么都不会工作)“。

…我仍然无法成功地将我的Node.js应用程序连接到位于Openshift的另一个Node.js应用程序中的MongoDB数据库。

我已经尝试了以下build议的主机string的排列:

  1. 本地主机
  2. 128.xxx.xxx.xxx
  3. [24个字符的散列] -myapp-mydomain.rhcloud.com

…都有相同的结果。 无连接。

这里是调用设置数据库连接的代码…

dbProvider = function(host, port, user, pass) { console.re.log("Attempting to create a DB instance..."); this.db = new Db(process.env.OPENSHIFT_MONGODB_EXTDB_DBNAME, new Server(host, port, { auto_reconnect: true }, {})); console.re.log("created the DB instance..."); if(this.db!= null){ console.re.log("successfully connected to remote db %s at %s:%s",this.db,host,port); this.db.open(function(error, db){ if(error){ console.re.log("error %s attempting to open the db at %s:%s",error,host,port); } else{ db.authenticate(user, pass, function(error, result) { //db.authenticate(user, pass, function(error, result) if(error){ console.re.log("error %s attempting to connect to remote db at %s:%s using user %s",error,host,port,user); } else{ console.re.log("successfully connected to remote db at %s:%s using user %s",host,port,user); } }); } }); } else{ console.re.log("unable to connect to remote db at %s:%s",host,port); } } 

上面的代码在db.open()的callback函数中失败,并带有一个空错误对象。

在检查this.db对象时,我们看到以下内容:

 { "domain": null, "_events": {}, "_maxListeners": 10, "databaseName": "myDb", "serverConfig": { "domain": null, "_events": {}, "_maxListeners": 10, "host": "xxxxxxxxxxxxxxxxxxxxxxxx-myApp-myDomain.rhcloud.com", "port": 12345, "options": { "auto_reconnect": true }, "internalMaster": false, "connected": false, "poolSize": 5, "disableDriverBSONSizeCheck": false, "ssl": false, "_used": true, "_readPreference": null, "socketOptions": {}, "logger": { "error": "[Function]", "log": "[Function]", "debug": "[Function]" }, "eventHandlers": { "error": [], "parseError": [], "poolReady": [], "message": [], "close": [], "timeout": [] }, "_serverState": "disconnected", "_state": { "runtimeStats": { "queryStats": { "m_n": 0, "m_oldM": 0, "m_oldS": 0, "m_newM": 0, "m_newS": 0, "numDataValues": 0, "mean": 0, "variance": 0, "standardDeviation": 0, "sScore": 0 } } }, "recordQueryStats": false }, "options": {}, "_applicationClosed": false, "bsonLib": { "Code": "[Function]", "Symbol": "[Function]", "BSON": "[Function]", "DBRef": "[Function]", "Binary": "[Function]", "ObjectID": "[Function]", "Long": "[Function]", "Timestamp": "[Function]", "Double": "[Function]", "MinKey": "[Function]", "MaxKey": "[Function]" }, "bson": {}, "bson_deserializer": "[ Circular {bsonLib} ]", "bson_serializer": "[ Circular {bsonLib} ]", "_state": "disconnected", "pkFactory": "[Function]", "forceServerObjectId": false, "safe": false, "notReplied": {}, "isInitializing": true, "auths": [], "openCalled": false, "commands": [], "_callBackStore": { "domain": null, "_events": {}, "_maxListeners": 10, "_notReplied": {} }, "logger": "[ Circular {logger} ]", "slaveOk": false, "tag": 1460656848883, "eventHandlers": { "error": [], "parseError": [], "poolReady": [], "message": [], "close": [] }, "serializeFunctions": false, "raw": false, "recordQueryStats": false, "reaperEnabled": false, "_lastReaperTimestamp": 1460656848883, "retryMiliSeconds": 1000, "numberOfRetries": 60, "reaperInterval": 10000, "reaperTimeout": 30000 

}

注意:主机,端口和数据库名称字段已被修改为隐私。

这个db对象不同于正确连接db对象只有两个字段…

db.serverConfig._serverStatedb._state等于'connected'与'disconnected'

感谢来自任何成功完成我所要做的事情的人。

谢谢!