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