0

我在 ibm bluemix 中创建了我的第一个应用程序,并添加了服务 mongodb:

{
  "mongodb-2.4": {
    "name": "mongodb-27",
    "label": "mongodb-2.4",
    "plan": "100",
    "credentials": {
      "hostname": "192.****.15",
      "host": "192.****.15",
      "port": 10021,
      "username": "7d5be****9358a",
      "password": "aede****dce9a",
      "name": "43c5a237-9f3a-4df0-85f7-4df9a2d26a5d",
      "db": "db",
      "url": "mongodb://7d5be****9358a:aede****dce9a@192.****.15:10021/db"
    }
  }
}

然后我尝试使用 mongoose 绑定 mongodb 服务:

var db;
if (process.env.VCAP_SERVICES) {
   var env = JSON.parse(process.env.VCAP_SERVICES);
   if (env['mongodb-2.2']) {
        db = mongoose.createConnection(env['mongodb-2.2'][0].credentials.url);
        console.log ("Connected to mongodb-2.2 service");
    } 
    if (env['mongodb-2.4']) {
        db = mongoose.createConnection(env['mongodb-2.4'][0].credentials.url);
        console.log ("Connected to mongodb-2.4 service");
    }
} else {
    db = mongoose.connect('mongodb://7d5be****9358a:aede****dce9a@192.155.243.15:10021/db');
}

但它不起作用。我用 mongodb-2.2 和 mongodb-2.4 服务做了两个选项,因为所有教程都有 mongodb-2.2 但我看到我的是 2.4

我想使用 mongoose + ember 创建一个带有 REST API 的应用程序,但我需要先解决数据库连接问题。

4

2 回答 2

0

你可以像下面这样尝试吗,它将删除对明确提及 mongodb 版本的依赖:

/*var mongoUrl; */
 var db;
if (process.env.VCAP_SERVICES)
{
      var env = JSON.parse(process.env.VCAP_SERVICES);
      for (var svcName in vcapServices)
      {
            if (svcName.match(/^mongo.*/))
            {
               db = mongoose.createConnection(env['mongodb-2.2'][0].credentials.url);
               console.log ("Connected to mongodb-2.2 service");
               /*
                  mongoUrl = vcapServices[svcName][0].credentials.uri;
                 mongoUrl = mongoUrl || vcapServices[svcName][0].credentials.url;
                 break; */
            }
        }
        /*var mongo = require('mongoskin'); /
       /*var db = mongo.db(mongoUrl, {native_parser:true}); */

PS:通过注释代码,我曾尝试使用另一种方法通过 Bluemix 建立与 mongodb 的连接,你可以尝试两者..

另外,我建议使用如下所示的 package.json 条目:

    "mongodb": "*",
    "mongoskin": "*"
于 2014-11-23T14:17:00.667 回答
0

您可以以优化的方式使用环境变量 VCAP_SERVICEs 来匹配 mongodb 版本。如下所示:

for (var svcName in vcapServices)
{
if (svcName.match(/^mongo.*/)){
 if (env['mongodb-2.2']) {
        db = mongoose.createConnection(env['mongodb-2.2'][0].credentials.url);
        console.log ("Connected to mongodb-2.2 service");
    } 
    if (env['mongodb-2.4']) {
        db = mongoose.createConnection(env['mongodb-2.4'][0].credentials.url);
        console.log ("Connected to mongodb-2.4 service");
    }
} else {
    db = mongoose.connect('mongodb://7d5be****9358a:aede****dce9a@192.155.243.15:10021/db');
}

这里有一些对您有用的链接 > http://ryanjbaxter.com/2014/03/03/moving-an-existing-node-js-app-to-run-on-bluemix/ http://blog.mongodb。 org/post/6587009156/cloudfoundry-mongodb-and-nodejs

于 2014-11-26T08:32:57.563 回答