2

VCAP_SERVICES に対して以下のコードを試しました:

if (process.env.VCAP_SERVICES) {
      var env = JSON.parse(process.env.VCAP_SERVICES);
      if (env['mongodb-2.2']) {
        var mongo = env['mongodb-2.2'][0]['credentials'];
      }
    } else {
           var mongo = {
              "username" : "user1",
              "password" : "secret",
              "url" : "mongodb://user1:secret@localhost:27017/test"
     }
}

//With this as the connector
var MongoClient = mongodb.MongoClient;
var db= MongoClient.connect(mongo.url, function(err, db) {
  if(err) {
    console.log("failed to connect to the database");
  } else {
    console.log("connected to database");
  }

しかし、それは " TypeError : Cannot read property "url" of underfined " をスローし続けます

私はモンクをコネクタとして使用してみました:

var monk = require('monk');
 var db = monk(mongo.url);

これも同じエラーをスローします。オブジェクト mongo を間違って使用している可能性があります。

4

4 に答える 4

1

私のブログで mongoDB と Bluemix を使用した投稿をご覧ください。上記のコードでは、mongo は定義されていません。上に移動するか、「var」を削除できます。これにより、コードの他のブロックからアクセスできるようになります

http://gigadom.wordpress.com/2014/07/27/a-bluemix-recipe-with-mongodb-and-node-js/ http://gigadom.wordpress.com/2014/08/07/spicing- up-a-ibm-bluemix-cloud-app-with-mongodb-and-nodeexpress/

よろしくガネーシャ

于 2014-11-21T05:38:46.627 に答える
0

2つのことが欠けています。

  1. mongourl は定義されていません。

2. mongodb のバージョンについて言及する必要はありません。以下のようにコードを最適化できます。

console.log('VCAP SERVICES: ' + JSON.stringify(process.env.VCAP_SERVICES, null, 4));

var mongoUrl;

if(process.env.VCAP_SERVICES) {

var vcapServices = JSON.parse(process.env.VCAP_SERVICES);

for (var svcName in vcapServices) {

if (svcName.match(/^mongo.*/)) {  --->this part will take care of mongodb version

      mongoUrl = vcapServices[svcName][0].credentials.uri;

      mongoUrl = mongoUrl || vcapServices[svcName][0].credentials.url;

      break;

    }

  }

} else {

       mongoUrl = "localhost:28001/alpha";   

      }
于 2014-11-12T03:26:03.637 に答える