sql >> Database teknologi >  >> NoSQL >> MongoDB

Tilslutning af Heroku App til Atlas MongoDB Cloud-tjeneste

Hvad jeg tror kan løse dit problem

Ansvarsfraskrivelse: Jeg har hverken brugt Heroku eller MongoDB Atlas, men jeg kigger nærmere på dem.

Ifølge et Github-problem, jeg fandt, får du den fejlmeddelelse, hvis du ikke har hvidlistet serverens IP-adresser i MongoDB Atlas.

Når jeg læser MongoDB Atlas-dokumenterne, er den eneste måde, jeg ser at gøre dette på i kombination med Heroku dynos, at tilføje 0.0.0.0/0 (dvs. alle adresser) til din MongoDB Atlas-hvidliste.

Prøv det, og meld venligst tilbage, om du kan instansiere en forbindelse.

På SSL

Forsøger at svare på SSL-spørgsmålet, jeg tror ikke, at du behøver at aktivere det på Heroku baseret på det, jeg læste, selvom jeg ikke er helt sikker.

Hvis MongoDB-serveren udførte certifikatvalidering, skulle Node.js-koden til at oprette forbindelse til den se ud som følgende (taget fra Node.js-driverdokumentationen):

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

Hvis MongoDB-serveren ikke tjekker for nogen SSL-certifikater, kan du blot bruge kode som følgende (også taget fra Node.js-driverdokumentationen):

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

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

I betragtning af at Atlas-dokumentationen indeholder følgende eksempelkode til at oprette forbindelse til den fra Node.js, tror jeg, at du ikke skal aktivere 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. MongoDB - Forespørgsel mellem et tidsinterval på timer

  2. Opdatering af et indlejret array med MongoDB

  3. hvad er pagecache, dentries, inoder?

  4. MongoDB - Aggregation - For at få unikke genstande i array