sql >> Database teknologi >  >> NoSQL >> MongoDB

Afstemningssystem med Backbone.js

Du behøver ikke at gemme hele modellen på serveren bare for at ændre én ting, du kan (og bør i dette tilfælde) tilføje en upVote metode til din model, der laver et "increment upvotes" AJAX-kald til din server. I din model ville du have noget som dette:

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

Og så ville synspunktet have dette til at håndtere opstemmehandlingen:

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

og du vil sandsynligvis have en lytter til ændringshændelser på modellens upVotes egenskab for korrekt at øge den viste upvote-tæller (hvis du har sådan en).

Desuden din /some/upvote/path på serveren ville bare sende en $inc opdatering ind i MongoDB for at undgå det samme "to ting sker på én gang"-problem på din server. Hvis du brugte en relationsdatabase, ville du gerne ende med at gøre noget som update t set upvotes = upvotes + 1 where id = ? .

Der er ikke behov for en "forespørgsel, opdatering, gem" tur-retur på hverken klienten eller serveren for en simpel trinoperation. Behandl i stedet stigningen som en enkelt trinoperation og skub stigningen helt ned til dit sidste vedvarende datalagerlag.




  1. Implementer MongoDB i en Amazon Virtual Private Cloud (VPC)

  2. Hvordan kan jeg bruge LIKE-operatoren på mongoose?

  3. Hvordan kan jeg gennemse/se de værdier, der er gemt i Redis

  4. Problem med at deserialisere redis-cache til objekter i Spring-boot