sql >> Databáze >  >> NoSQL >> MongoDB

Připojení aplikace Heroku ke cloudové službě Atlas MongoDB

Co si myslím, že by mohlo vyřešit váš problém

Odmítnutí odpovědnosti: Nepoužil jsem ani Heroku, ani MongoDB Atlas, ale dívám se na ně.

Podle problému na Github, který jsem našel, se vám tato chybová zpráva zobrazí, pokud jste v MongoDB Atlas nepřidali IP adresy serveru na bílou listinu.

Když čtu dokumenty MongoDB Atlas, jediný způsob, jak toho dosáhnout v kombinaci s Heroku dynos, je přidat 0.0.0.0/0 (tj. všechny adresy) do vašeho seznamu povolených MongoDB Atlas.

Vyzkoušejte to a nahlaste nám, zda můžete vytvořit instanci připojení.

Na SSL

Když se pokouším odpovědět na otázku týkající se SSL, nemyslím si, že byste jej na Heroku měli povolit, na základě toho, co jsem četl, i když si tím nejsem úplně jistý.

Pokud by server MongoDB provedl ověření certifikátu, kód Node.js pro připojení k němu by musel vypadat následovně (převzato z dokumentace ovladače 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();
});

Pokud server MongoDB nekontroluje žádné certifikáty SSL, můžete jednoduše použít kód jako následující (také převzatý z dokumentace ovladače Node.js):

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

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

Vzhledem k tomu, že dokumentace Atlasu obsahuje následující ukázkový kód pro připojení k němu z Node.js, myslím, že ne musíte povolit SSL na 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. Může redis plně nahradit mysql?

  2. Promítnout první položku v poli do nového pole (agregace MongoDB)

  3. Aggregate $lookup nevrací prvky původní pořadí pole

  4. Přesměrování portů pomocí nginx z javy