Firebase脱机数据不一致

时间:2017-02-21 14:14:28

标签: android swift firebase firebase-realtime-database nosql

数据库结构

 {
    "places": {
        "<push-key>": {
            "name": "Company X"
        },
        "<push-key>": {
            "name": "Restaurant Y"
        }
    }
    "users": {
        "<push-key>": {
            "name": "Harry"
        }
    },
    "userPlaces": {
        "<user-push-key>": {
            "<place-push-key>": {
                "name": "Company X"
            }
        }
    }
}

问题

我们正在开发一个应用程序,用户可以在其中为其帐户添加地点。我们已经对数据库进行了非规范化。这样我们就可以获得更快的阅读请求(以及更轻松的过滤和排序)。但是现在我们遇到了问题,当用户离线工作时,他们可以将缓存的地点添加到他们的帐户中。

但是如果在用户离线时更改了地点的名称,则缓存版本和实时版本将不再同步。 Wat恰好是应用程序使用旧位置数据将位置写入userPlaces节点。

这会导致数据不一致。这个问题有什么问题吗?

修改

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Map<String, Object> update = new HashMap<>();
update.put("userPlaces/" + userId + "/" + mPlace.getKey(), place);
update.put("placeUsers/" + mPlace.getKey() + "/" + userId, user);
reference.updateChildren(update);

数据提供给firebase。 firebase在联机时会更新值。

0 个答案:

没有答案