【问题标题】:How get each element of an array in firestore如何在firestore中获取数组的每个元素
【发布时间】:2019-10-18 11:57:40
【问题描述】:

我已经花费了很多时间来寻找如何在里面放置一个数组。我想访问数组的每个元素并将其存储在一个字符串中,例如 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]

【问题讨论】:

  • 请将您的数据库结构添加为截图。

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


【解决方案1】:

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

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

【讨论】:

  • 非常感谢。现在我可以继续如何将每个元素放在我的 FirestoreRecyclerAdapter 上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 2011-07-08
  • 2015-03-06
  • 1970-01-01
  • 2021-06-29
  • 2016-11-19
  • 2021-10-21
相关资源
最近更新 更多