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

Hệ thống bỏ phiếu với Backbone.js

Bạn không phải lưu toàn bộ mô hình vào máy chủ chỉ để thay đổi một thứ, bạn có thể (và trong trường hợp này nên thêm một upVote phương thức cho mô hình của bạn thực hiện cuộc gọi AJAX "tăng số phiếu ủng hộ" tới máy chủ của bạn. Trong mô hình của bạn, bạn có một cái gì đó như thế này:

upVote: function() {
    var self = this;
    $.ajax({
        url: '/some/upvote/path',
        type: 'POST',
        success: function(data) {
            self.set('upVotes', data.upVotes);
        },
        // ...
    });
}

Và sau đó, chế độ xem sẽ có điều này để xử lý hành động ủng hộ:

upVote: function() {
    // Highlight the upvote button or provide some other feedback that
    // the upvote has been seen.
    this.model.upVote();
}

và bạn có thể có một trình nghe các sự kiện thay đổi trên upVotes của mô hình thuộc tính để tăng đúng bộ đếm ủng hộ được hiển thị (nếu bạn có một thứ như vậy).

Hơn nữa, /some/upvote/path của bạn trên máy chủ sẽ chỉ gửi một $inc cập nhật vào MongoDB để tránh cùng một sự cố "hai điều xảy ra cùng một lúc" trên máy chủ của bạn. Nếu bạn đang sử dụng cơ sở dữ liệu quan hệ, bạn sẽ muốn thực hiện một việc gì đó như update t set upvotes = upvotes + 1 where id = ? .

Không cần thực hiện một chuyến khứ hồi "truy vấn, cập nhật, lưu" trên máy khách hoặc máy chủ cho một hoạt động gia tăng đơn giản. Thay vào đó, hãy coi số gia tăng như một thao tác tăng đơn lẻ và đẩy gia số đó xuống tận lớp lưu trữ dữ liệu liên tục cuối cùng của bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn Mongo Distinction với Sum không hoạt động

  2. Trong bộ Mongo db chính-phụ, nếu bạn vô tình ghi vào tệp phụ, nó sẽ phản ánh trong bộ chính, nó sẽ được chuyển đến chính

  3. cú pháp liên kết các tài liệu trong mongodb

  4. Chuyển đổi chuỗi thành MongoDB BsonDocument

  5. mongoexport E QUERY Cú pháp Lỗi:Số nhận dạng không mong muốn