Query DB đồng bộ với knexjs?



  • Chào các bạn, mình đang dùng knexjs nhưng gặp vấn đề với việc xử lý bất đồng bộ của nó quá, vì mình cần query database theo đúng logic trình tự.

    VD: mình có vòng for từ 1->1000, để mình insert từ 1 đến 1000 vào db theo đúng thứ tự tăng dần

    for (var i=1; i<=1000; i++) {
        knex('test').insert({number: i}).then();
    }
    

    vì knexjs xử lý ko đồng bộ nên những số mình insert vào db nó ko tăng dần mà là thứ tự ngẫu nhiên (query nào xong trước thì số tương ứng insert vào trước)
    Vậy trường hợp này mình nên giải quyết thế nào ạ. Mình tìm nát stackoverflow rồi nhưng chưa tìm đc câu trả lời nào phù hợp cả. Thank


  • Global Moderator

    @Duy-Ta bạn sử dụng Await/Async là được.

    Ví dụ:

    async insertDb() {
      for (var i=1; i<=1000; i++) {
        await knex('test').insert({number: i});
      }
    }
    
    // execute
    insertDb();
    


  • Bạn có thể tham khảo Promise all nhé


Log in to reply