MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Kết nối ứng dụng Heroku với dịch vụ đám mây Atlas MongoDB

Điều tôi nghĩ có thể khắc phục sự cố của bạn

Tuyên bố từ chối trách nhiệm: Tôi chưa sử dụng Heroku và MongoDB Atlas nhưng tôi đang xem xét chúng.

Theo một vấn đề Github mà tôi đã tìm thấy, bạn sẽ nhận được thông báo lỗi đó nếu bạn chưa đưa các địa chỉ IP máy chủ vào danh sách trắng trong MongoDB Atlas.

Đọc tài liệu về MongoDB Atlas, cách duy nhất tôi thấy để thực hiện việc này kết hợp với Heroku dynos là thêm 0.0.0.0/0 (tức là tất cả các địa chỉ) vào danh sách trắng MongoDB Atlas của bạn.

Hãy thử và vui lòng báo cáo lại xem bạn có thể khởi tạo kết nối hay không.

Trên SSL

Đang cố gắng trả lời câu hỏi SSL, tôi không nghĩ rằng bạn cần bật nó trên Heroku dựa trên những gì tôi đọc được, mặc dù tôi không hoàn toàn chắc chắn.

Nếu máy chủ MongoDB thực hiện xác thực chứng chỉ, mã Node.js để kết nối với nó sẽ phải trông giống như sau (lấy từ tài liệu trình điều khiển 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();
});

Nếu máy chủ MongoDB không kiểm tra bất kỳ chứng chỉ SSL nào, bạn có thể chỉ cần sử dụng mã như sau (cũng được lấy từ tài liệu trình điều khiển Node.js):

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

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

Do tài liệu Atlas có chứa mã ví dụ sau để kết nối với nó từ Node.js, tôi nghĩ rằng bạn không phải bật SSL trên 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khóa ngoại trong mongo?

  2. Cách kiểm tra kết nối với mongodb

  3. Có bất kỳ lý do nào khiến tôi nên / không nên sử dụng ObjectId trong url RESTful của mình không

  4. Nhận tổng hợp riêng biệt của một trường mảng trên các chỉ mục

  5. Cơ sở dữ liệu MongoDB và Thống kê Bộ sưu tập