確保非規範化 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中文網其他相關文章!