Đổ dữ liệu của nhiều collection trong mongodb ra ngoài website trang chủ

tôi muốn đỗ dữ liệu của nhiều collection trong mongodb ra ngoài website trang chủ của tôi và tôi đã làm như code ở bên dưới. mọi người xem giúp dùm có đúng ko ạ hay có cách nào chỉ điểm ko ạ . xin cảm ơn.!

  function index(req , res , next){ 

    var store_product = [];    
    var store_banner = [];  
    var store_newest = [];   

    db.collection("product").find({}).toArray(function(err , product){
      store_product = product;

      db.collection("banner").find({}).toArray(function(err , banner){
        store_banner = banner;        

        db.collection("newest").find({}).toArray(function(err , newest){
          store_newest = newest;
          return res.render("/index" , {product : product ,banner : banner , newest : newest}); 
        })
      })
    })   
  }

Làm vậy không sai nhưng nó mất đi sự bất đồng bộ và có thể làm code bị chậm đi.
Để nhanh hơn bạn có thể cho 3 hàm chạy cùng lúc và chờ trả về kết quả cùng 1 thời điểm thông qua cú pháp async/await + Promise.all

Vì toArray trả về 1 promise nên ta làm được như sau:

function async index(...) {
   ...
    // chạy 3 promise cùng lúc, chờ khi nào cả 3 promise hoàn thành thì sẽ trả về kết quả
    const [product, banner, newest] = await Promise.all([
     db.collection("production").find({}).toArray(),
     db.collection("banner").find({}).toArray(),
     db.collection("newest").find({}).toArray(),
    ])
    return res.render("/index" , { product, banner, newest }); 
}
9 Likes

Tôi đã từng có ý tưởng xẽ làm như cách của bạn. Nhưng ko biết viết như thế nào…giờ thì tôi đã biết cách phải làm sao…xin chân thành cảm ơn bạn.!!

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?