sql >> Databasteknik >  >> NoSQL >> MongoDB

Ansluter Heroku App till Atlas MongoDB molntjänst

Vad jag tror kan lösa ditt problem

Ansvarsfriskrivning: Jag har varken använt Heroku eller MongoDB Atlas men jag tittar på dem.

Enligt ett Github-problem som jag hittade kommer du att få det felmeddelandet om du inte har vitlistat serverns IP-adresser i MongoDB Atlas.

När jag läser MongoDB Atlas-dokumenten är det enda sättet jag ser för att göra detta i kombination med Heroku dynos att lägga till 0.0.0.0/0 (dvs alla adresser) till din MongoDB Atlas vitlista.

Ge det ett försök och rapportera tillbaka om du kan instansiera en anslutning.

På SSL

Försöker svara på SSL-frågan, jag tror inte att du behöver aktivera den på Heroku baserat på vad jag läst, även om jag inte är helt säker.

Om MongoDB-servern utförde certifikatvalidering, måste Node.js-koden för att ansluta till den se ut så här (tagen från Node.js-drivrutinen):

var MongoClient = require('mongodb').MongoClient,
  f = require('util').format,
  fs = require('fs');

// Read the certificates
var ca = [fs.readFileSync(__dirname + "/ssl/ca.pem")];
var cert = fs.readFileSync(__dirname + "/ssl/client.pem");
var key = fs.readFileSync(__dirname + "/ssl/client.pem");

// Connect validating the returned certificates from the server
MongoClient.connect("mongodb://localhost:27017/test?ssl=true", {
  server: {
      sslValidate:true
    , sslCA:ca
    , sslKey:key
    , sslCert:cert
    , sslPass:'10gen'
  }
}, function(err, db) {
  db.close();
});

Om MongoDB-servern inte letar efter några SSL-certifikat kan du helt enkelt använda kod som följande (även hämtad från Node.js-drivrutinen):

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/test?ssl=true", function(err, db) {
  db.close();
});

Med tanke på att Atlas-dokumentationen innehåller följande exempelkod för att ansluta till den från Node.js, tror jag att du inte måste aktivera SSL på Heroku:

var MongoClient = require('mongodb').MongoClient;

var uri = "mongodb://kay:[email protected]:27017,mycluster0-shard-00-01-wpeiv.mongodb.net:27017,mycluster0-shard-00-02-wpeiv.mongodb.net:27017/admin?ssl=true&replicaSet=Mycluster0-shard-0&authSource=admin";
MongoClient.connect(uri, function(err, db) {
  db.close();
});


  1. hur man lagrar en bild i redis med python / PIL

  2. Konvertera sträng till datum i mongodb

  3. Kan jag använda Tornado+ Selleri+ RabbitMQ + Redis?

  4. Konfigurera Apache Reverse Proxy för att vara värd för Laravel Echo Server vid produktion