MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Łączenie aplikacji Heroku z usługą Atlas MongoDB Cloud

Co moim zdaniem może rozwiązać Twój problem

Zastrzeżenie: Nie używałem ani Heroku, ani MongoDB Atlas, ale przyglądam się im.

Zgodnie z problemem, który znalazłem na Github, otrzymasz ten komunikat o błędzie, jeśli nie umieściłeś adresów IP serwerów w Atlasie MongoDB.

Czytając dokumentację MongoDB Atlas, jedynym sposobem, jaki widzę, aby to zrobić w połączeniu z hamowniami Heroku, jest dodanie 0.0.0.0/0 (tj. wszystkie adresy) do białej listy MongoDB Atlas.

Spróbuj i zgłoś, czy możesz nawiązać połączenie.

Włącz SSL

Próbując odpowiedzieć na pytanie SSL, nie sądzę, że musisz włączyć go w Heroku na podstawie tego, co przeczytałem, chociaż nie jestem do końca pewien.

Gdyby serwer MongoDB wykonał weryfikację certyfikatu, kod Node.js do połączenia z nim musiałby wyglądać następująco (zaczerpnięty z dokumentacji sterownika Node.js):

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();
});

Jeśli serwer MongoDB nie sprawdza żadnych certyfikatów SSL, możesz po prostu użyć poniższego kodu (także zaczerpniętego z dokumentacji sterownika Node.js):

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

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

Biorąc pod uwagę, że dokumentacja Atlas zawiera następujący przykładowy kod do łączenia się z nim z Node.js, myślę, że nie trzeba włączyć SSL w 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest najlepszy graficzny interfejs użytkownika MongoDB? — Aktualizacja 2019

  2. Mongoose nadpisuje dokument zamiast pól `$set`

  3. błąd:parametr typu `D` musi być użyty jako parametr typu dla niektórych typów lokalnych

  4. restart usługi sudo mongodb daje nierozpoznany błąd usługi w ubuntu 14.0.4

  5. Kolekcja zamków Mongodb do momentu ustawienia flagi?