MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Система за гласуване с Backbone.js

Не е нужно да запазвате целия модел на сървъра само за да промените едно нещо, можете (и трябва в този случай) да добавите upVote метод към вашия модел, който прави AJAX извикване на "increment upvotes" към вашия сървър. Във вашия модел ще имате нещо подобно:

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

И тогава изгледът ще има това, за да обработи действието за гласуване:

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

и вероятно ще имате слушател за събития за промяна на upVotes на модела свойство за правилно увеличаване на показания брояч за гласуване (ако имате такова нещо).

Освен това вашият /some/upvote/path на сървъра просто ще изпрати $inc актуализация в MongoDB, за да избегнете същия проблем „две неща, случващи се наведнъж“ на вашия сървър. Ако използвате релационна база данни, бихте искали да направите нещо като update t set upvotes = upvotes + 1 where id = ? .

Няма нужда от „запитване, актуализиране, записване“ на клиента или сървъра за проста операция за увеличаване. Вместо това третирайте увеличението като еднократна операция за увеличение и натиснете това увеличение до крайния си слой за постоянно съхранение на данни.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. В MongoDB, как да се извърши заявка въз основа на това дали едно поле на низ съдържа друго

  2. Тествайте @Transactional с Flapdoodle Embedded MongoDB в Spring Boot

  3. значение на sudo chown -R `id -u` /data/db

  4. Извличане от множество отделни колекции с Express и MongoDB

  5. Как да вмъкнете нов обект, без да изтривате предишния