有没有办法从Android中的Firestore中的数组获取数据

时间:2019-06-26 04:57:39

标签: java android firebase google-cloud-firestore

我想从user_stories中获取数据,例如故事,story_startstory end吗?

这是我的Firestore数据库的图像。

enter image description here

1 个答案:

答案 0 :(得分:1)

正如我在您的数据库模式中看到的那样,您的user_stories属性是数组类型。这意味着,当您尝试获取该文档时,该属性以List对象的形式得到,而不是作为数组。不幸的是,Firestore无法将该列表转换为自定义对象的列表,您必须自己做。因此,请尝试以下操作:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference sendStoriesRef = rootRef.collection("sendstories");
sendStoriesRef.document("kueIJcdQARzEKU7EVio9").get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                List<Map<String, Object>> list = (List<Map<String, Object>>) document.get("user_stories");

                //Iterate through the list to get the desired values
            }
        }
    }
});

现在只需简单地遍历列表即可获得所需的值。如果kueIJcdQARzEKU7EVio9是用户的uid,则只需使用此uid更改该值:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();