Openshift mongodb连接网址

时间:2015-10-29 01:56:10

标签: node.js mongodb url openshift database

我正试图在openshift上将我的毕业项目放在我的覆盆子pi上几个月,所以我可以将我的pi用于其他目的。

我已经转移了所有nodejs代码。我已经mongodumped并将数据库从PI恢复到openshift。所以除了从数据库连接以外,我已经开始运行了一切,我无法弄清楚我做错了什么。

这就是我在nodejs代码(config / database.js)

中的内容
module.exports = {
  // 'url': 'mongodb://username:password@myraspberrypiIP:27017/trackmyride'
  //  ABOVE LINE WORKS - OPENSHIFT CAN CONNECT TO MY LOCAL DATABASE

  //  ALL LINES BELOW ARE THINGS I TRIED, BUT NODEJS SERVER CAN NEVER START
  // 'url': 'mongodb://$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/'
  // 'url': 'mongodb://username:password@OPENSHIFT_MONGODB_DB_HOST:OPENSHIFT_MONGODB_DB_PORT/cruizerserver'
  // 'url': 'OPENSHIFT_MONGODB_DB_URL/cruizerserver'
  // 'url': 'mongodb://admin:password@127.*.**.***:27017/cruizerserver'
  // 'url': OPENSHIFT_MONGODB_DB_URL+'cruizerserver'

  'url': process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":"
  + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@"
  + process.env.OPENSHIFT_MONGODB_DB_HOST + ':'
  + process.env.OPENSHIFT_MONGODB_DB_PORT + '/'
  + process.env.OPENSHIFT_APP_NAME;
};

(密码/用户名/ *是stackoverflow的占位符)

有没有人知道我做错了什么。 使用第一行(连接到我家的raspberryPI上的数据库)时,服务器和项目工作正常但是当我用其中一个底线替换它时,服务器拒绝启动。即使它们是从openshift的文档中复制粘贴的。 https://blog.openshift.com/getting-started-with-mongodb-on-nodejs-on-openshift/

谢谢, 文森特

2 个答案:

答案 0 :(得分:4)

在OpenShift上,您不必自己构建网址。只需从环境变量OPENSHIFT_MONGODB_DB_URL + OPENSHIFT_APP_NAME获取它。

url:  process.env.OPENSHIFT_MONGODB_DB_URL + process.env.OPENSHIFT_APP_NAME

组合这两个env变量将形成如下:

mongodb://admin:LUXXXXXXX-YI@XXXX0f534382ecf0d2000095-your_domain.rhcloud.com:52821/your_app_name

答案 1 :(得分:2)

我们可以使用 openshift环境变量来构建连接URL。 实施例。

  // default to a 'localhost' configuration:
  var connection_string = '127.0.0.1:27017/YOUR_APP_NAME';
  // if OPENSHIFT env variables are present, use the available connection info:
  if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
    connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
    process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
    process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
    process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
    process.env.OPENSHIFT_APP_NAME;
  };
  //Connect to mongodb using mongoose library
  mongoose.connect(connection_string);
 };