ホームページ >ウェブフロントエンド >jsチュートリアル >データの整合性を維持するために Firebase で非正規化データを同期するにはどうすればよいですか?
非正規化 Firebase データベースでデータの整合性を確保することは、複数の場所にわたる一貫性を維持するために重要です。非正規化データを同期するための 3 つの実用的なアプローチを次に示します。
マルチパス書き込みを使用すると、複数のパスをアトミックに更新できます。たとえば、プロファイル内のユーザー名を更新すると、そのユーザーに関連付けられたすべてのメッセージ内のユーザー名も同時に更新できます。
var updates = {}; // all paths to be updated and their new values updates['users/'+uid+'/name'] = name; var query = ref.child('messages').orderByChild('user').equalTo(uid); query.once('value', function(snapshot) { snapshot.forEach(function(messageSnapshot) { updates['messages/'+messageSnapshot.key()+'/username'] = name; }) ref.update(updates); });
インスタント データの整合性を維持する場合は、それほど重要ではありませんが、サーバー側スクリプトを使用してデータを非同期的に更新できます。このアプローチでは、データベースが最終的に追いついて正しい値を反映するため、最終的な整合性が保証されます。
function renameUser(ref, uid, name) { ref.child('users').child(uid).update({ name: name }); var query = ref.child('messages').orderByChild('user').equalTo(uid); query.once('value', function(snapshot) { snapshot.forEach(function(messageSnapshot) { messageSnapshot.update({ username: name }); }) }); }
場合によっては、重複したデータ間で一貫性を維持する必要がない場合があります。データ。たとえば、チャット アプリケーションでは、現在の名前を反映するために過去のすべてのメッセージを更新するのではなく、メッセージが送信されたときのユーザー名を表示することが許容される場合があります。
以上がデータの整合性を維持するために Firebase で非正規化データを同期するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。