我正在编写一个 Android 应用程序,我想检查一个键是否存在以避免重复值。我一直在调查,但看起来我只能添加监听器,而我只想检查 ID 是否存在。
拿这个SO question例如,我想知道 -JlvccKbEAyoLL9dc9_v
是否存在。我该怎么做?
提前致谢。
最佳答案
该方法将始终类似于我在这个关于 JavaScript 的回答中所写的:Test if a data exist in Firebase
ref.child("-JlvccKbEAyoLL9dc9_v").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.exists()) {
// TODO: handle the case where the data already exists
}
else {
// TODO: handle the case where the data does not yet exist
}
}
@Override
public void onCancelled(FirebaseError firebaseError) { }
});
但请记住,Firebase 中的推送 ID 的存在是为了避免必须进行此类检查。当多个客户端生成推送 ID 时,它们在统计上保证是唯一的。因此,其中一个无法创建与另一个相同的 key 。
任何需要检查项目是否已存在的情况都可能存在竞争条件:如果两个客户端几乎同时执行此检查,则它们都不会找到值。
关于java - 检查 Firebase Android 中是否存在 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838410/