java - 检查 Firebase Android 中是否存在 ID

标签 java android database firebase

我正在编写一个 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/

相关文章:

Python Flask 搜索 MySQL 数据库出现()

database - Heroku Django 安装后 postgres 数据库/syncdb 的问题

java - 在java中用换行符替换逗号

java - 将 Google map 添加到底部导航栏的按钮

java - 从 Bundle getParcelable 有时会导致 java android 中的 BadParcelableException

android - Fragment 中的 MapView(Android 4.0 或更高版本)

java - CAS 和非阻塞计数器

java - 如何访问速度模板文件中的 map

java - ResultSet.TYPE_SCROLL_SENSITIVE 的行为

带有 YesNo 字段的 Access 中的 SQL 查询不返回任何结果