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

Bagaimana cara memastikan panggilan asinkron dijalankan sebelum kembali dari suatu fungsi di Mongoose?

Anda tetap harus menggunakan async tetapi Anda membutuhkan async.waterfall untuk itu. Inilah yang perlu Anda pertimbangkan:

Metode utama untuk memanggil async . Anda fungsi:

var getInformation = function(){
  async.waterfall([
    //Array of your functions in order, we will be back here later
  ], function (err) {
       if(err){
         console.log(err);
       }else{
         console.log('Everything OK!');
     }
  );
}

Maka Anda perlu fungsi Anda menjadi async ramah, itu berarti Anda harus menggunakan panggilan balik dan memberikan data Anda dari satu fungsi ke fungsi lainnya. Sesuatu seperti ini:

function findUser(callback){
  //Do something
  if('Everything OK'){
    callback(err, yourData); //err should be null if everything is OK and yourData should be the data that you wanna use in your next function. e.g. schoolId 
  }else{
    callback(err); //Something was wrong, "err" should have something different to null
  }
}

function findSchool(callback, schoolId){ //Note that we receive the parameter schoolId here but not in the first function
  //Do something
  if('Everything OK'){
    callback(err, yourData); //err should be null if everything is OK and yourData should be the data that you wanna use in your next function. e.g. schoolName 
  }else{
    callback(err); //Something was wrong, "err" should have something different to null
  }
}

function findStudents(callback, schoolName){
  //Do something
  if('Everything OK'){
    callback(err); //err should be null if everything is OK if this is the last function maybe we don't need to send back more data from here 
  }else{
    callback(err); //Something was wrong, "err" should have something different to null
  }
}

Maka Anda harus memanggil fungsi Anda dalam metode utama Anda:

var getInformation = function(){
  async.waterfall([
    findUser,
    findSchool,
    findStudents
    //Note that there is no need to tell the functions the parameters they are sending or receiving here
  ], function (err) {
       if(err){
         console.log(err);
       }else{
         console.log('Everything OK!');
     }
  );
}

Dan hanya itu, Anda memiliki 3 fungsi yang harus dijalankan satu demi satu dan tidak diperlukan panggilan balik.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Membuat kueri luwak.js berjalan secara sinkron

  2. MongoDB :menanyakan dokumen dengan dua bidang yang sama, $match dan $eq

  3. Cegah Data Musim Semi untuk Mongo untuk mengonversi id ke ObjectId

  4. ImportError:Tidak ada modul bernama 'pymongo'

  5. docker-compose untuk menjalankan Django dengan mongodb