在 Firebase 非规范化中保持数据一致性
将数据写入多个位置的 Firebase 以便更快地检索时,保持所有位置的数据一致性至关重要地点。以下是实现此目的的两种方法:
原子写入
Firebase 现在提供了一种同时对多个路径执行原子写入的方法。使用 multipathWrites 方法,您可以通过单个操作更新多个位置。
let 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); });
最终一致性
此方法涉及异步更新重复数据。首先,更新主要数据源(例如用户的个人资料)。然后,查询重复数据的所有实例(例如包含用户名的消息)并一一更新。
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中文网其他相关文章!