首页 > 解决方案 > 如何从firebase实时数据库中读取所有键中的数据

问题描述

我想检索所有用户(包括登录用户)的数据。我面临的问题是,通过使用我的以下代码,我最终读取了仅登录用户的数据(让键是 01Rn.. ),而我想要检索所有数据(FJHdk .. 键也是)。

我想在书籍节点下显示键 01Rn...和 ​​FJHdk...内的数据。但我只获取 01Rn...键内的数据。

Uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

mdatabasereference=FirebaseDatabase.getInstance().getReference().child("Sell").child("Books").child(Uid);

@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<b_ooks> options = new FirebaseRecyclerOptions.Builder<b_ooks>()
                                                   .setQuery(mdatabasereference,b_ooks.class)
                                                   .build();
    FirebaseRecyclerAdapter<b_ooks,booksViewHolder> recyclerAdapter = new FirebaseRecyclerAdapter<b_ooks, booksViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull final booksViewHolder holder, int position, @NonNull final b_ooks model) {


            mdatabasereference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                     for(DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
                           for (DataSnapshot data : postsnapshot.getChildren()) {
                             holder.Title.setText(model.getTitle());
                             holder.Price.setText(model.getPrice());
                         }

                     }

数据库映像

标签: androidfirebase-realtime-database

解决方案


要为所有用户处理书籍,请在 JSON 中创建对更高一级数据的引用:

DatabaseReference booksRef = FirebaseDatabase.getInstance().getReference().child("Sell").child("Books");

onDataChange然后在你的循环中添加一个额外的外观DataSnapshot

booksRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            for(DataSnapshot bookSnapshot : dataSnapshot.getChildren()) {
                System.out.println(bookSnapshot.getKey());
                System.out.println(bookSnapshot.child("Title").getValue(String.class));
            }
        }
    }

推荐阅读