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