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