首页 > 解决方案 > 从 firebase 实时数据库中获取数据

问题描述

我想以排序方式从firebase获取数据,我尝试了以下方法,但它不能正常工作并收集所有数据。

这是我的 firebase 数据库的图像:

数据库映像

  DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference();
        
String input = "G";
Date cd = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
String formattedDate = df.format(cd);
FirebaseUser currentUser = mAuth.getCurrentUser();
DatabaseReference data = databaseRef.child("Data").child(currentUser.getUid()).child(formattedDate.toString()).child(medname.toString());
databaseRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        List<String> data = new ArrayList<String>();

        for (DataSnapshot postSnapshot : snapshot.getChildren()) {
            data.add(postSnapshot.getValue().toString());
        }
        Log.d("datafriebase",""+data);
    }

我想以排序方式获取数据,例如值 1,值 2,但我正在获取整个数据库

标签: javaandroidfirebasefirebase-realtime-database

解决方案


您正在获取整个数据库,因为您正在读取databaseRef,您将其初始化为:

DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference();

要仅获取嵌套数据,请从data设置为引用该路径的 中读取:

DatabaseReference data = databaseRef.child("Data").child(currentUser.getUid()).child(formattedDate.toString()).child(medname.toString());

所以:

data.addValueEventListener(new ValueEventListener() {
    ...

推荐阅读