如何从Firebase实时数据库读取所有键中的数据

时间:2019-01-06 14:41:09

标签: android firebase-realtime-database

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

我想在books节点下显示键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());
                         }

                     }

Database Image

1 个答案:

答案 0 :(得分:0)

要为所有用户处理图书,请创建对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));
            }
        }
    }