如何在Firestore中获取数组的每个元素

时间:2019-10-18 11:57:40

标签: java android arrays firebase google-cloud-firestore

我已经花了很多时间搜索如何在内部获取数组。我想访问数组的每个元素并将其存储在字符串中,例如String array = ??? (我想获得价值)。

进一步了解我的问题。假设我有一个包含所有id的数组,我想检查是否存在一个id,如果是这样,我想将每个元素存储在一个字符串中(每个元素必须在不同的字符串上),以便以后使用在我的其他活动中。

有没有使用for循环的方法?

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

        DocumentReference docRef = db.collection("Users").document(userId);


        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if (task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if (document.exists()) {
                        String plan_id =  document.get("plan_id").toString();
                        Log.d(TAG, "***Found field: " + plan_id);
                    } else {
                        Log.d(TAG, "***No such document");
                    }
                } else {
                    Log.d(TAG, "***Get failed with ", task.getException());
                }
            }
        });

我得到以下输出

***Found field: [3bTzKOmIS1zEHprJa1u0, 6nDgyEimKOnoPbZRsbmQ]

1 个答案:

答案 0 :(得分:0)

如果文档中有一个列表类型字段,则在获取时它将转换为Java中的列表类型对象。您现在正在执行的操作是将该列表转换为字符串,这不是很有帮助。只需将其转换为列表,然后像其他任何列表一样对其进行迭代:

List<Object> plan_id = (List<Object>) document.get("plan_id");
for (Object o : plan_id) {
    Log.d(TAG, "List element " + o.toString());
}