java - 获得具有特定值(value)的所有 child 的最简单方法是什么

标签 java android firebase firebase-realtime-database

enter image description here

我想获取 1 级 的“用户”的所有子项。最简单的方法是什么?

我已经制作了构造函数、Getter 和 Setter 以及 ListView,但我仍然看不懂代码。我想理解代码,这样我就可以自己修改它。

最佳答案

要获取级别 1 的所有用户,您需要使用查询。因此,请尝试以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query levelQuery = rootRef.child("users").orderByChild("level").equalTo(1);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String username = ds.child("username").getValue(String.class);
            Log.d(TAG, username);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
levelQuery.addListenerForSingleValueEvent(valueEventListener);

logcat 中的输出将是:

user1

附注您应该考虑将用户数据存储在用户 ID 下,而不是在推送的 ID 下。以纯文本形式存储凭据并不是一个好主意。我建议您实现Firebase Authentication这样您就可以使用Firebase Security Rules保护您的数据库。如果您想保留自己的身份验证机制,请参阅相关官方文档:

关于java - 获得具有特定值(value)的所有 child 的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57174152/

相关文章:

java - 通过 UDP 从 Android 向外部传感器发送数据

java - 在日期结束后在列表 kotlin 中添加值

android - 将位图设置为 intent extra 会导致错误

android - 进度指示器

java - 在android中选中复选框时如何计算百分比?

java - 使用正则表达式作为 StringTokenizer 的分隔符

java - Android:调整 EditText 字体大小使文本适合一行

javascript - 有什么办法可以禁用所有 firebase 日志记录到控制台吗?

Firebase 查询双重嵌套

firebase - 我想在我的Flutter应用程序中从Firebase数据库中获取当前用户数据