sql >> Database >  >> NoSQL >> MongoDB

Heroku-app verbinden met Atlas MongoDB Cloud-service

Wat ik denk dat je probleem zou kunnen oplossen

Disclaimer: Ik heb noch Heroku noch MongoDB Atlas gebruikt, maar ik ben ze aan het onderzoeken.

Volgens een Github-probleem dat ik heb gevonden, krijg je die foutmelding als je de server-IP-adressen niet op de witte lijst hebt gezet in MongoDB Atlas.

Als ik de MongoDB Atlas-documenten lees, zie ik dit alleen in combinatie met Heroku-dyno's door 0.0.0.0/0 toe te voegen. (d.w.z. alle adressen) op uw MongoDB Atlas-witte lijst.

Probeer dat eens en laat weten of je een verbinding kunt maken.

Op SSL

Ik probeer de SSL-vraag te beantwoorden, ik denk niet dat je het op Heroku hoeft in te schakelen op basis van wat ik lees, hoewel ik niet helemaal zeker ben.

Als de MongoDB-server certificaatvalidatie heeft uitgevoerd, zou de Node.js-code om er verbinding mee te maken er als volgt uit moeten zien (overgenomen uit de Node.js-stuurprogrammadocumentatie):

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

Als de MongoDB-server niet controleert op SSL-certificaten, kunt u eenvoudig code gebruiken zoals de volgende (ook overgenomen uit de Node.js-stuurprogrammadocumentatie):

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

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

Aangezien de Atlas-documentatie de volgende voorbeeldcode bevat om er verbinding mee te maken vanuit Node.js, denk ik dat u dit niet doet moet SSL inschakelen op 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. Serieel herhalen over een mongodb-cursor (wachten op callbacks voordat u naar het volgende document gaat)

  2. PHP opstarten Kan dynamische bibliotheek php_mongo.dll niet laden

  3. Redis-serialisatie en deserialisatie

  4. Gegevenscompressie inschakelen in MongoDB 3.0