MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara mengekspor objek yang hanya tersedia dalam panggilan balik asinkron?

Opsi terbaik, sebagai disarankan di komentar oleh elclanrs , adalah mengekspor janji:

// 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();

(Saya menggunakan Q yang luar biasa perpustakaan di sini.)

Di bawah ini adalah versi lama dari jawaban saya, dibiarkan demi sejarah (tetapi jika Anda tidak ingin menggunakan janji, alih-alih pergi ke jalan itu, Anda harus menggunakan Jawaban Matt ).

Kelemahannya adalah ia akan membuka koneksi setiap kali Anda require('database.js) (menyebalkan!)

// 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. Tidak dapat menanyakan mongoDB dengan luwak di node.js

  2. MongoEngine - Pengguna lain sudah diautentikasi ke database ini. Anda harus logout terlebih dahulu

  3. Multi update luwak

  4. Bagaimana cara mengatasi ClassNotFoundException:com.mongodb.connection.BufferProvider?

  5. Mongodb (v2.4.0) $match agregat tidak berfungsi dengan rentang tanggal