当前位置: 首页 > 知识库问答 >
问题:

如何从嵌套在多个子节点中的Firebase调用数据?

姜运珧
2023-03-14

我在尝试访问firebase实时数据库中的嵌套子节点时遇到问题。

我遇到的错误是

通用域名格式。谷歌。firebase。数据库DatabaseException:无法转换java类型的对象。lang.字符串以键入sg。埃杜。新加坡科技公司。团队项目。用户

我在这里看到了解决方案:如何访问Firebase数据库中嵌套在子节点中的子节点?

这是我尝试从firebase调用数据的代码:

    DatabaseReference databaseUsers;
    databaseUsers = FirebaseDatabase.getInstance().getReference("users");



        databaseUsers.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                //method is called whenever data at location is updated
                showData(dataSnapshot);
                }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
        return view;
    }

    private void showData(DataSnapshot dataSnapshot) {
        FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
        String userID = currentUser.getUid();

        for (DataSnapshot uniqueIDSnapshot : dataSnapshot.getChildren()) {
            //Loop 1 to go through all child nodes of users
            for(DataSnapshot vouchersSnapshot : uniqueIDSnapshot.child(userID).getChildren()){
                //loop 2 to go through all the child nodes of vouchers node
                users user = vouchersSnapshot.getValue(users.class);
            }
        }
    }

这是我的用户类

package sg.edu.singaporetech.teamproject;

public class users {

    String id;
    String email;
    String level;
    String steps;
    String vouchers;

    public users() {
    }

    public users(String id, String email, String level) {
        this.id = id;
        this.email = email;
        this.level = level;
        this.steps = steps;
        this.vouchers = vouchers;
    }

    public String getId() {
        return id;
    }

    public String getEmail() {
        return email;
    }

    public String getLevel() {
        return level;
    }

    public String getSteps() { return steps;}

    public String getVouchers() { return vouchers;}

    public void setId(String id) {
        this.id = id;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setLevel(String level) {
        this.level = level;
    }

    public void setSteps(String steps) {
        this.steps = steps;
    }

    public void setVouchers(String vouchers) {
        this.vouchers = vouchers;
    }
}

那么,我如何才能不获得错误,并具体获得当月(即3月19日)数据库结构中显示的“true”或“false”值呢?

非常感谢你的帮助。


共有1个答案

越俊艾
2023-03-14

要检索truefalse,请尝试以下操作:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("vouchers");
mDatabaseUsers.addValueEventListener(new ValueEventListener() {
  @Override
public void onDataChange(DataSnapshot dataSnapshot) {

   String values     = dataSnapshot.child("april19").getValue(String.class);
   String boolValues = dataSnapshot.child("march19").getValue(String.class);
}

  @Override
public void onCancelled(DatabaseError databaseError) {

  }
});

这里的dataSnapshot位于子凭证,您可以轻松访问19年4月和19年3月的值,而无需迭代。

 类似资料:
  • 假设我的数据库结构如下: 当删除任何用户1\u UID时,我想从所有节点a、b、c中删除用户1\u UID。 例如,如果我从节点b中删除了key1:user1\u-UID,是否有一种方法也可以从节点a和节点c中删除key1:user1\u-UID,而无需遍历所有节点?还是我的数据结构错误(请注意,这些数据可能嵌套得更深)?

  • 问题内容: 我正在一个项目中,用户对我们的代客服务的请求在另一端代客接受请求。 我正在使用Firebase作为后端,并应要求将客户uid保存在“ request”子项上。 当代客接受请求时,客户uid应从“请求”节点移至“进行中”节点。 我怎样才能做到这一点? 问题答案: 我建议使用这个: 这来自以下来源:https : //gist.github.com/katowulf/6099042。我在J

  • 我的Firebase数据库映像在Firebase的实时数据库中,我正在尝试访问父节点的名称,并给出了子节点的名称。但是,.parent似乎需要对子节点的引用,如果没有父节点的名称,我似乎无法获得子节点的引用。 这是我的数据的代码: 问题出在like函数中:如果我能找到一种方法来获取发tweet(参数t表示的tweet)的人的userId,那么第一个var y和所有这些都是不必要的。 如果我可以得到

  • 问题内容: 我正在尝试获取Firebase中嵌套节点的密钥,但不确定如何执行此操作。 例如在这种情况下: 例 我怎么知道1之内有2,3,4? 我正在考虑将值分别放在Firebase中的列表中。但是,有没有更聪明的方法呢?是否有更有效的方法来获取Firebase中所有嵌套节点的密钥? 问题答案: 在Android中 允许访问此快照的所有直接子级。可以在本机for循环中使用: 在iOS中 斯威夫特3:

  • 我当前的firebase结构如下所示 本来我的保安看起来 这一切都很好,因为我可以通过 然而,我想给这个分支增加更多的安全性,这样用户就不能通过写操作(读取是可以的)更新前端的代码来修改其中的一些条目。我希望用户能够根据isAdmin标志修改这些条目,例如, companyId(读:auth!=null,写:isAdmin==true) 因为所有读取=auth!=无效的起初,我认为因为我能够读取所

  • 我想删除firebase实时数据库中某个子项的特定子项。 我已经添加了我的数据库的图片。 我想删除突出显示的子对象。