android - 查询适用于 Android 的 Firebase 数据库

标签 android firebase firebase-realtime-database

我知道有很多类似的问题但是没有人有我要找的答案,我咨询的所有问题都有答案谈论childrenEvetListeners...

我的问题要简单得多。这是我的 Firebase 数据库: enter image description here

我的问题是:如何进行查询,检查是否存在用户名为“fofof”的用户?

最佳答案

你有一个混合结构,这让事情变得复杂。但是,如果您只是在 /users/-K.... 下寻找匹配项,您可以通过以下方式找到匹配项:

Query query = ref.child("users").orderByChild("User/username").equalTo("fofof");
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            Log.i(TAG, "fofof exists and is stored under key "+userSnapshot.getKey());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
    }
});

关于您当前设置的一些警告:

  • 您将用户存储在推送 ID 下。虽然推送 ID 非常适合没有自然键且您希望按时间顺序存储的集合,但最好将您的用户存储在 UID 下。所以例如/users/s5iu....
  • 您将用户信息嵌套得比必要的深了一层。虽然这行得通,但我会去掉树中的 User 级别。
  • 您有一个用户直接位于 /users 下,而其他用户存储在更深的一层。创建这样一个混合模型不是一个好主意。

关于android - 查询适用于 Android 的 Firebase 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552168/

相关文章:

Android内容提供者随机排序

Android: "Cannot Resolve symbol ' addValueEventListener'"在 Firebase 中

firebase - 如何正确为 Cloud Functions 创建 URL 屏蔽以创建 NEG?

swift - 为什么在 Swift 中调用两次方法时 GeoFire Query 仅填充数组?

android - 初始化期间的 Firebase Crashlytics 错误

java - Android - Firebase - 不同类型的用户登录

firebase - 如何处理 Firebase 中的分层数据?

swift - 如何根据 FireBase 数据快照检查用户名的亵渎

swift - ClosedRange Firebase Swift 读写

java - 错误 : Android/Sdk/build-tools/21. 0.2/aapt.exe 以非零退出值 42 完成