10.2.2. ハッシュベースの競合検出の実装


ハッシュベースの競合検出は、クライアントによって更新されているオブジェクト total に基づいて競合を検出するメカニズムです。これは、各オブジェクトをハッシュ化し、ハッシュを比較することによって行われます。これは、オブジェクトが同等であり、競合がないと見なすことができるかどうかをサーバーに通知します。

手順

  1. @aerogear/voyager-conflicts パッケージをインポートします。

    const { HashObjectState } = require('@aerogear/voyager-conflicts')
    Copy to Clipboard Toggle word wrap
  2. HashObjectState 実装を使用する場合は、ハッシュ関数を提供する必要があります。関数のシグネチャは次のようになります。

    const hashFunction = (object) {
      // Using the Hash library of your choice
      const hashedObject = Hash(object)
      // return the hashedObject in string form
      return hashedObject;
    }
    Copy to Clipboard Toggle word wrap
  3. HashObjectState をインスタンス化するときにこの関数を提供します。

    const conflictHandler = new HashObjectState(hashFunction)
    Copy to Clipboard Toggle word wrap
  4. リゾルバーを実装します。すべての競合は、次のような事前定義された一連の手順を使用して処理できます。

    // 1. Read data from data source
    const serverData = db.find(clientData.id)
    // 2. Check for conflicts
    const conflict = conflictHandler.checkForConflicts(serverData, clientData)
    // 3. If there is a conflict, return the details to the client
    if(conflict) {
        throw conflict;
    }
    // 4. Save object to data source
    db.save(clientData.id, clientData)
    Copy to Clipboard Toggle word wrap

上記の例では、throw ステートメントにより、クライアントが競合クライアント側を解決するために必要なすべてのデータを確実に受信します。このデータの詳細は、Structure of the Conflict Error を参照してください。

競合はクライアントで解決されるため、データを保持する必要はありません。ただし、競合がない場合は、クライアントから送信されたデータを保持する必要があります。クライアント側の競合の解決の詳細は、Resolving Conflicts on the Client を参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る