2014-09-11 7 views
2

Я попытался следующий код для VCAP_SERVICES:Как подключить мой mongodb с приложением NODEjs на Bluemix?

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:[email protected]: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: Не удается прочитать свойство„URL“из underfined»

Я попытался с помощью монаха как соединитель дает:

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

Это также вызывает такую ​​же ошибку. Возможно, я неправильно использовал объект mongo.

+0

Какой версией Монго вы используете это 2,2 наверняка? – BatScream

+0

'var mongo' выходит за рамки. –

ответ

2

Похоже, что mongo.url не определен, попробуйте изменить код, как показано ниже.

var mongo = {}; 

if (process.env.VCAP_SERVICES) { 
    var env = JSON.parse(process.env.VCAP_SERVICES); 
    if (env['mongodb-2.2']) { 
     mongo['url'] = env['mongodb-2.2'][0]['credentials']['uri']; 
    } 
    } else { 
      var mongo = { 
       "username" : "user1", 
       "password" : "secret", 
       "url" : "mongodb://user1:[email protected]: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"); 
} 
0

app.js:

console.log ('VCAP УСЛУГИ:' + JSON.stringify (process.env.VCAP_SERVICES, Null, 4));

var mongoUrl;

если (process.env.VCAP_SERVICES) {

вар vcapServices = JSON.parse (process.env.VCAP_SERVICES);

для (вар svcName в vcapServices) {

if (svcName.match(/^mongo.*/)) { 

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

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

    break; 

} 

}

}

еще {

mongoUrl = "локальный: 27017/SScheduler";

}

// База данных

вар Монго = требуется ('mongoskin');

var db = mongo.db (mongoUrl, {native_parser: true});

// вар дб = mongo.db ("MongoDB: // локальный: 27017/nodetest2", {native_parser: истинный}); -> локальная

попробовать, как это, вам не нужно подробно указать любую учетную информацию.

0

две вещи отсутствуют.

  1. mongourl не определен.

2.you не нужно упомянуть 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"; 

     } 
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/

С уважением Ганеша

+0

Спасибо, я забыл связать mongodb как услугу, используя cf. Я последовал за первым блоком, который вы упомянули, и теперь я счастлив после этого с помощью приложения bluemix: D –

+0

Также у меня были некоторые проблемы с переменными cf env, так как структура отличается от учебника в bluemix. Определенно, просмотр переменной env на консоли определенно сэкономит много времени отладки. –

 Смежные вопросы

  • Нет связанных вопросов^_^