android - 如何从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());
}
}
解决方案
要为所有用户处理书籍,请在 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));
}
}
}
推荐阅读
- machine-learning - 编码分类列 - 标签编码与决策树的一种热编码
- html - 链接无法在桌面上使用,但可以在移动设备上使用
- android - Android CameraX: java.lang.IllegalStateException: maxImages (2) 已经获取,获取更多之前调用#close
- macos - mac os 上 df 和 du 之间的可用磁盘空间存在很大分歧
- python-3.x - 在 Python 3.7 中自定义一个嵌套字典(或集合)
- javascript - 能不能在 express 路由中使用 app.route 堆栈中的 app.all 来节省一些代码行?
- linux - AWS - sudo:无法解析主机 ip-xxxx:资源暂时不可用,我无法更改 /etc/hosts 因为它是只读的
- laravel - Tinker 不使用 Laravel Dusk 进行调试
- javascript - 嵌套休息调用时出现 UnhandledPromiseRejectionWarning
- node.js - Axios catch 不会从 express 调用