【问题标题】:Retrieve Custom Field from FireStore android从 FireStore android 中检索自定义字段
【发布时间】:2020-01-06 10:10:01
【问题描述】:

您好,我想从所有用户那里检索集合“收藏夹”下的字段“ID”。

FirebaseDatabase.getInstance().getReference("Favorite")
    .addValueEventListener(new ValueEventListener(){ 
        @Override 
            public void onDataChange(DataSnapshot dataSnapshot) { 
                for (DataSnapshot dst : dataSnapshot.getChildren()) { 
                //Key stores KjfLmUnPUaWeYDETp04 and PlamHmUnPUaWeYDETp04 String key = dst.getKey(); Log.d("Idsssss", key);
                }
            }
    });

            String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
            CollectionReference favoriteRef = rootRef.collection("usersFavorite").document(firebaseAuth.getCurrentUser().getUid()).collection("Favorite");
            favoriteRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d("TAGTAGTAG", document.getString("id"));
                        }
                    }
                }
            });

但它不起作用我想从所有文档中获取所有文档 ID, 当我想检索文档 ID 时,它只检索第一个 ID(因为它与用户的 ID 相同)使用此命令 String id = FirebaseFirestore.getInstance().collection("usersFavorite").document(firebaseAuth.getUid()).collection("Favorite").document(firebaseAuth.getUid()).getId();

完成,我的路径是 usersFavorite => UserId => Favorite => Random ID => 然后是我要检索 ID 的收藏列表

这是我的火力基地结构 enter image description here

【问题讨论】:

  • 请发布到目前为止您尝试过的内容。您可以一次检索所有孩子。
  • FirebaseDatabase.getInstance().getReference("Favorite").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot dst : dataSnapshot.getChildren()) { //Key存储KjfLmUnPUaWeYDETp04和PlamHmUnPUaWeYDETp04 String key = dst.getKey(); Log.d("Idsssss", key);
  • 我不认为上述结构适用于 Firebase 实时数据库。
  • 这是 FireStore 不是实时数据库
  • @MondherEssid 请提供更详细的数据库结构,以便我可以使用正确的参考更新我的答案。我需要查看根集合。

标签: java android firebase google-cloud-firestore


【解决方案1】:

您在尝试使用从 Firebase 实时数据库获取数据的代码时与 Firestore 数据库共享屏幕截图,这将不起作用,因为 Cloud Firestore 和 Firebase 实时数据库是两种不同的产品.要获取这些文档的 ID,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference favoriteRef = rootRef.collection("usersFavorite").document(uid).collection("Favorite");
favoriteRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                Log.d("TAG", document.getString("id"));
            }
        } else {
            Log.d("TAG", task.getException().getMessage());
        }
    }
});

logcat 中的结果将是打印出来的id 属性的所有值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-20
    • 2021-03-06
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2021-06-24
    相关资源
    最近更新 更多