Maison >interface Web >js tutoriel >Comment puis-je synchroniser les données dénormalisées dans Firebase pour maintenir l'intégrité des données ?
Garantir l'intégrité des données dans une base de données Firebase dénormalisée est crucial pour maintenir la cohérence entre plusieurs emplacements. Voici trois approches pratiques pour synchroniser les données dénormalisées :
L'utilisation des écritures multi-chemins vous permet de mettre à jour plusieurs chemins de manière atomique. Par exemple, lorsque vous mettez à jour le nom d'un utilisateur dans son profil, vous pouvez simultanément mettre à jour le nom d'utilisateur dans tous les messages associés à cet utilisateur :
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); });
Si le maintien de la cohérence instantanée des données est Moins critique, vous pouvez utiliser un script côté serveur pour mettre à jour les données de manière asynchrone. Cette approche garantit une cohérence éventuelle, car la base de données finira par rattraper son retard et refléter les valeurs correctes.
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 }); }) }); }
Dans certains cas, il peut ne pas être nécessaire de maintenir la cohérence entre les données dupliquées. données. Par exemple, dans une application de chat, il peut être acceptable d'afficher le nom de l'utilisateur tel qu'il était au moment de l'envoi d'un message, plutôt que de mettre à jour tous les messages passés pour refléter le nom actuel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!