2017-01-28 9 views
0

Как вы используете Mongoose: https://github.com/Automattic/mongoose?Узел, соединение Mongoose с IBM Bluemix Compose for Mongodb

Пример: https://github.com/IBM-Bluemix/compose-mongodb-helloworld-nodejs работал отлично. Вот упрощенный фрагмент кода Пример MONGO:

MongoClient.connect(credentials.uri, { // step 1: connect 
    mongos: {...}, 
    function(err, db) { 
     if (err) { 
      console.log(err); 
     } else { 
      mongodb = db.db("examples"); // step 2: create or use database 
     } 
    } 
); 

Я не могу найти пример мангуста, который использует процесс соединения два шага.

Я заметил, что Compose for Mongodb не поддерживает прямое подключение к существующей базе данных примеров. Подключение к этому URL:

mongodb://admin:[email protected]:22601,bluemix...0.dblayer.com:22601/examples' 

результаты в 'MongoError: аутентификация не в состоянии'

ответ

0

Вот отрывок из образца, который с помощью Compose для MongoDB и мангуста:

var mongoDbUrl, mongoDbOptions = {}; 
var mongoDbCredentials = appEnv.getServiceCreds("mycomposedb").credentials; 
var ca = [new Buffer(mongoDbCredentials.ca_certificate_base64, 'base64')]; 
mongoDbUrl = mongoDbCredentials.uri; 
mongoDbOptions = { 
    mongos: { 
    ssl: true, 
    sslValidate: true, 
    sslCA: ca, 
    poolSize: 1, 
    reconnectTries: 1 
    } 
}; 
console.log("Connecting to", mongoDbUrl); 
mongoose.connect(mongoDbUrl, mongoDbOptions); // connect to our database 

Тогда вы может переключать базу данных с useDb.

The full source code is here

0

Ни фрагмент код Фредерика (использует драйвер Монго), ни исходный код, он связан (подключается к администратору БД) позволяет использовать мангуста для подключения к пользовательской MongoDB.

Чтобы подключиться к пользовательскому db с помощью mongoose IBM Compose, вы должны указать другую строку подключения, отличную от стандартной, предоставленной Compose.

Следующий шаблон строки подключения работает:

var connectionUrl = 'mongodb://<username>:<password>@<hostname>:<port>,<hostname-n>:<port-n>/<db-name>?ssl=true&authSource=admin'; 

со следующими параметрами:

var sslCA = [fs.readFileSync('mongo.cert')]; 
var options = { 
    ssl: true, 
    sslValidate: true, 
    sslCA, 
}; 

я предоставил the complete working example на Github