sql >> Databáze >  >> NoSQL >> MongoDB

Hlasovací systém s Backbone.js

Nemusíte ukládat celý model na server, jen abyste změnili jednu věc, můžete (a v tomto případě byste měli) přidat upVote metodu k vašemu modelu, která provede volání AJAX „increment upvotes“ na váš server. Ve svém modelu byste měli něco takového:

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

A pak by pohled měl toto, aby zvládl akci pro souhlas:

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

a pravděpodobně byste měli posluchače událostí změn na upVotes modelu vlastnost správně zvýšit zobrazené počítadlo hlasů pro (pokud takovou věc máte).

Dále váš /some/upvote/path na serveru by pouze odeslal $inc aktualizace do MongoDB, abyste se vyhnuli stejnému problému „dvě věci se dějí najednou“ na vašem serveru. Pokud byste používali relační databázi, chtěli byste skončit s něčím jako update t set upvotes = upvotes + 1 where id = ? .

Pro jednoduchou operaci přírůstku není potřeba zpáteční cesta „dotaz, aktualizace, uložení“ na klientovi ani na serveru. Namísto toho zacházejte s přírůstkem jako s jedinou operací přírůstku a posuňte tento přírůstek až dolů do vaší konečné vrstvy trvalého úložiště dat.




  1. MongoDB vytáhne prvek z pole do hloubky dvou úrovní

  2. Jak třídit dokumenty na základě délky pole Array

  3. Nelze vytvořit uživatele (nebo vlastní role) v Mongo na serveru NodeJS

  4. MongoDB - velikost souboru je obrovská a stále roste