当前位置: 首页 > 知识库问答 >
问题:

Firestore获取文档快照字段的值

司寇灵均
2023-03-14

如果我有一个Firebase Firestore数据库,我已为右侧集合对应的文档检索到文档快照,并存储在文档变量中,那么我如何在“用户名”字段检索该文档快照中的值?该字段具有字符串值。

共有3个答案

吕永寿
2023-03-14

您需要执行DocumentResources以获取文档中的内容。

简单的就是这样。

DocumentReference docRef = myDB.collection("users").document("username");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
     public void onComplete(@NonNull Task<DocumentSnapshot> task) {
          if (task.isSuccessful()) {
               DocumentSnapshot document = task.getResult();
                    if (document != null) {
                         Log.i("LOGGER","First "+document.getString("first"));
                         Log.i("LOGGER","Last "+document.getString("last"));
                         Log.i("LOGGER","Born "+document.getString("born"));
                    } else {
                         Log.d("LOGGER", "No such document");
                    }
               } else {
                    Log.d("LOGGER", "get failed with ", task.getException());
                }
          }
     });

缺点是您需要知道您的文档ID才能获取字段值。

施赞
2023-03-14

您可以使用get方法来获取字段的值

String username = (String) document.get("username");  //if the field is String
Boolean b = (Boolean) document.get("isPublic");       //if the field is Boolean
Integer i = (Integer) document.get("age")             //if the field is Integer

查看DocumentSnapshot的文档

阮雅达
2023-03-14

DocumentSnapshot有一个getString()方法,该方法采用字段的名称并以字符串形式返回其值。

String value = document.getString("username");
 类似资料:
  • 我试图设置一个聊天应用程序,在其中你可以搜索随机的用户交谈。现在,firestore中的数据库结构如下: 集合“users”-文档“userid”-集合“conversations”-文档“conversationid”-字段“partner”,“lastmessage” 其次,我有一个集合“conversations”,其中包含对话中的所有消息。 我现在尝试做的是,当你按下一个按钮时,应用程序将

  • 我想从firestore中子文档的地图中获得特定的数据,并将其显示在我的web应用程序页面中。我真的不知道如何在部分调用数据。 注意:stages是一个字段映射 图片来帮助解决我的问题: 设置非映射字段的代码: 注意:已经是子文档中的非map字段,可以使用前面提到的代码轻松地从数据库中取出。

  • 我有一个名为“posts”的Firebase Firestore集合,其结构如下: 我可以查询所有类别为“general”的博客文章,如:然而,我似乎无法找到一种方法来获取“类别”映射为空的所有文档。 我想查询“帖子”集合中的所有文档,其中有。我尝试了,但没有成功。我将如何获取这些数据?

  • 我有一个文档集合,其中文档的id是用户id。让我们称这些为用户文档。 每个“用户文档”包含聊天消息的子集合。但并不是所有的“用户文档”都包含任何字段(数据,而不是子集合)。 我不想返回集合中没有任何字段但有子集合的所有文档,但我觉得这是不可能的? 此代码只返回包含字段的文档,而不是只有子集合的文档?有没有办法全部返回? 如何获取集合中所有文档id的列表?空的和非空的都有?或者,如果我不能访问没有字

  • 我正在尝试优化我的应用程序在Firesbase上的读取次数,并回顾我使用快照监控实时更改的方式。假设我有一个快照,返回10个最新文档,如下所示: 医生说 每次查询结果更改时(即添加、删除或修改文档时),快照处理程序都会收到一个新的查询快照。 这是否意味着每次查询更改时,我都将被计费10次读取?在这个例子中,如果添加了一个新城市(所以使用最新的“日期添加”,所以在查询中排在第一位),它将是1(只是新

  • 我正在尝试从Firebase的DocumentSnapshot中获取数据。 此方法完全正常并返回true,但是: 返回false... 有人有想法吗,为什么会这样?这只是我申请中的一个小问题,但我很好奇为什么会这样。只是为了理解。谢谢你! 编辑: 以下是购物车集合的屏幕截图: 以下是产品集合的屏幕截图: