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

Cách tốt nhất để kết nối với MongoDB bằng Node.js

Bạn có thể sử dụng biến toàn cục để giữ kết nối (ví dụ:db ), ví dụ:

var db = null // global variable to hold the connection

MongoClient.connect('mongodb://localhost:27017/', function(err, client) {
    if(err) { console.error(err) }
    db = client.db('test') // once connected, assign the connection to the global variable
})

app.get('/', function(req, res) {
    db.collection('test').find({}).toArray(function(err, docs) {
        if(err) { console.error(err) }
        res.send(JSON.stringify(docs))
    })
})

Hoặc, nếu muốn, bạn cũng có thể sử dụng đối tượng Promise được trả về bởi MongoClient nếu nó được gọi mà không có đối số gọi lại:

var conn = MongoClient.connect('mongodb://localhost:27017/') // returns a Promise

app.get('/', function(req, res) {
    conn.then(client=> client.db('test').collection('test').find({}).toArray(function(err, docs) {
        if(err) { console.error(err) }
        res.send(JSON.stringify(docs))
    }))
})

Xin lưu ý rằng tôi đã sử dụng định nghĩa hàm mũi tên béo ES6 trong ví dụ thứ hai.

Bạn hoàn toàn chính xác rằng bạn không nên gọi MongoClient mỗi lần. Sử dụng biến toàn cục hoặc Promises cho phép trình điều khiển MongoDB node.js tạo nhóm kết nối, đạt được ít nhất hai điều tốt:

  • Các kết nối được sử dụng lại trong một nhóm, vì vậy không có nhiều quá trình thiết lập / gỡ bỏ tốn kém trong suốt thời gian ứng dụng của bạn. Bạn kết nối một lần và để tài xế lo phần còn lại cho bạn.
  • Bạn có thể kiểm soát lượng kết nối mà ứng dụng của bạn thực hiện với cơ sở dữ liệu bằng cách giới hạn kích thước của nhóm kết nối.

Chỉnh sửa 2018-08-24 :MongoClient.connect() trong trình điều khiển node.js phiên bản 3.0 và mới hơn trả về một đối tượng khách thay vì một đối tượng cơ sở dữ liệu. Các ví dụ trên đã được sửa đổi để cập nhật phiên bản trình điều khiển node.js mới nhất.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:mongoimport mất kết nối khi nhập các tệp lớn

  2. Hiểu các tùy chọn hết thời gian chờ của ứng dụng khách MongoDB

  3. Tổng hợp MongoDB:Đếm các trường riêng biệt

  4. MongoDB / NoSQL:Giữ lịch sử thay đổi tài liệu

  5. Lỗi:getaddrinfo ENOTFOUND trong nodejs để nhận cuộc gọi