sql >> データベース >  >> NoSQL >> MongoDB

Backbone.jsを使用した投票システム

    1つだけ変更するためにモデル全体をサーバーに保存する必要はありません。upVoteを追加できます(この場合は追加する必要があります)。 サーバーへの「増分賛成」AJAX呼び出しを行うモデルへのメソッド。モデルには次のようなものがあります:

    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を送信するだけです。 更新 サーバーで同じ「2つのことが同時に発生する」問題を回避するためにMongoDBに追加します。リレーショナルデータベースを使用している場合は、update t set upvotes = upvotes + 1 where id = ?のような操作を行うことになります。 。

    単純な増分操作のために、クライアントまたはサーバーのいずれかで「クエリ、更新、保存」のラウンドトリップを行う必要はありません。代わりに、増分を単一の増分操作として扱い、その増分を最終的な永続データストレージレイヤーまでプッシュします。




    1. リストの長さをredisで制限する

    2. redisの`DUMP`と`RESTORE`(オフライン)の使い方は?

    3. mongoDBスキーマのフラット化

    4. スレーブからマスターにredisデータを復元する