确保非规范化 Firebase 数据库中的数据完整性对于保持多个位置的一致性至关重要。以下是同步非规范化数据的三种实用方法:
使用多路径写入允许您以原子方式更新多个路径。例如,当您更新用户个人资料中的姓名时,您可以同时更新与该用户关联的所有消息中的用户名:
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中文网其他相关文章!