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

Làm cách nào để khắc phục sự cố không đồng bộ MongoDB / Node này?

Một số ngôn ngữ cung cấp cấu trúc ngôn ngữ đặc biệt để giải quyết vấn đề này. Ví dụ:C # có async / await từ khóa cho phép bạn viết mã như thể bạn đang gọi các API đồng bộ.

JavaScript thì không và bạn phải xâu chuỗi createAccount cuộc gọi với các cuộc gọi lại.

Một số người đã phát triển các thư viện có thể giúp bạn sắp xếp mã này. Ví dụ: async , bước , nút hứa Q

Bạn cũng có thể sử dụng sợi thư viện, một thư viện gốc mở rộng thời gian chạy JavaScript với các sợi / coroutines.

Và một số người đã mở rộng ngôn ngữ với các cấu trúc tương tự như async / await : streamline.js , IcedCoffeeScript hoặc wind.js . Ví dụ:streamline.js (tôi là tác giả nên rõ ràng tôi có thành kiến) sử dụng _ dưới dạng trình giữ chỗ gọi lại đặc biệt và cho phép bạn viết ví dụ của mình dưới dạng:

var db = MongoClient.connect("mongodb://localhost:27017/bq", _):
var accounts = db.createCollection('accounts', _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);

function createAccount(email, password, _) {
    var item = accounts.findOne({"email":email}, _);
    if (item === null) {
        accounts.insert({"email":email, "password":password}, _);
        console.log("Account " + email + " created."); }
    } else {
        console.log("Account already exists.")
    }
}

Và, cuối cùng nhưng không kém phần quan trọng, các tính năng ngôn ngữ mới như trình tạo chức năng hoãn lại đang được thảo luận về các phiên bản JavaScript trong tương lai (các trình tạo rất có thể xuất hiện trong ES6, các chức năng bị trì hoãn có vẻ hơi bị đình trệ).

Vì vậy, bạn có nhiều lựa chọn:

  • bám sát các lệnh gọi lại
  • sử dụng thư viện trợ giúp
  • sử dụng phần mở rộng thời gian chạy của sợi
  • sử dụng tiện ích mở rộng ngôn ngữ
  • đợi ES6


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb không thể kết nối với máy chủ

  2. MongoDB tổng hợp các đường ống với đối tượng được liên kết

  3. Cách tốt nhất để kết nối / ngắt kết nối với cơ sở dữ liệu là gì?

  4. Không thể sử dụng Mongodb khác biệt trong Nodejs

  5. Lấy HTML từ MongoDB để sử dụng trong Mẫu