Apa yang menurut saya dapat memperbaiki masalah Anda
Penafian: Saya tidak menggunakan Heroku atau MongoDB Atlas tetapi saya sedang mencarinya.
Menurut masalah Github yang saya temukan, Anda akan mendapatkan pesan kesalahan itu jika Anda belum memasukkan alamat IP server ke dalam daftar putih di MongoDB Atlas.
Membaca dokumen MongoDB Atlas, satu-satunya cara yang saya lihat untuk melakukan ini dalam kombinasi dengan Heroku dynos adalah dengan menambahkan 0.0.0.0/0
(yaitu semua alamat) ke daftar putih MongoDB Atlas Anda.
Cobalah dan laporkan kembali apakah Anda dapat membuat instance koneksi.
Di SSL
Mencoba menjawab pertanyaan SSL, saya rasa Anda tidak perlu mengaktifkannya di Heroku berdasarkan apa yang saya baca, meskipun saya tidak sepenuhnya yakin.
Jika server MongoDB melakukan validasi sertifikat, kode Node.js untuk menghubungkannya akan terlihat seperti berikut (diambil dari dokumentasi driver 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();
});
Jika server MongoDB tidak memeriksa sertifikat SSL apa pun, Anda cukup menggunakan kode seperti berikut (juga diambil dari dokumentasi driver Node.js):
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test?ssl=true", function(err, db) {
db.close();
});
Mengingat bahwa dokumentasi Atlas berisi kode contoh berikut untuk menghubungkannya dari Node.js, saya rasa Anda tidak harus mengaktifkan SSL di 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();
});