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

Làm cách nào để xuất một đối tượng chỉ khả dụng trong lệnh gọi lại không đồng bộ?

Tùy chọn tốt nhất, như được đề xuất trong nhận xét bởi elclanrs , là xuất một lời hứa:

// database.js
var MongoClient = require('mongodb').MongoClient,
    Q = require('q'),
    connect = Q.nbind(MongoClient.connect, MongoClient);

var promise = connect(/* url */);        

module.exports = {
  connect: function () {
    return promise;
  }
}

// app.js
var database = require('./database');

database.connect()
  .then(function (db) {
    app.get('/', function (req, res) {
      db.collection(/* … */);
    });
  })
  .catch(function (err) {
    console.log('Error connecting to DB:', err);
  })
  .done();

(Tôi đang sử dụng Q tuyệt vời thư viện ở đây.)

Dưới đây là phiên bản cũ của câu trả lời của tôi, để lại cho lịch sử (nhưng nếu bạn không muốn sử dụng lời hứa, thay vì đi theo con đường đó, bạn nên sử dụng Câu trả lời củaMatt ).

Nhược điểm của nó là nó sẽ mở một kết nối mỗi khi bạn require('database.js) (chết tiệt!)

// DO NOT USE: left for the sake of history

// database.js
var MongoClient = require('mongodb').MongoClient;

function connect(cb) {
  MongoClient.connect(/* the URL */, cb);
}

module.exports = {
  connect: connect
}

// app.js
var database = require('./database');

database.connect(function (err, db) {
  app.get('/', function (req, res) {
      db.collection(/* … */);
  });
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB và C # Find ()

  2. Module.require (...). * Có trả về một bản sao của module.exports. * Hoặc một tham chiếu của nó không?

  3. Sắp xếp theo độ dài mảng

  4. Mongoose insert

  5. Làm cách nào để diễn giải các thuộc tính lastErrorObject được trả về từ MongoDB?