【问题标题】:Java Android Get the name of a collection from the Firestore FirebaseJava Android 从 Firestore Firebase 中获取集合的名称
【发布时间】:2021-06-21 13:43:02
【问题描述】:

我正在尝试检索出现在“userPosts”中的第一个集合的名称:

然后我尝试这样做:

FirebaseFirestore.getInstance().collection("post").document(listUserId).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        Toast.makeText(MainActivity.this, "" + task.getResult().getString("userPosts"), Toast.LENGTH_LONG).show();
    }
});

但结果是“null”。

有没有办法在 userPosts 中获取第一个集合的名称(这是一个文档)?

【问题讨论】:

  • 那么你到底想得到什么,文档的ID,也就是3f*b...a!jz
  • @AlexMamo 是文档的 ID

标签: java android firebase google-cloud-firestore


【解决方案1】:

要获取3f*b...a!jz 文档的名称,您需要创建一个指向userPosts 集合的引用,然后使用get() 调用,如以下代码行所示:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference userPostsRef = rootRef.collection("post").document(listUserId).collection("userPosts");
userPostsRef.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.getId());
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

logcat 中的结果将是:

3f*b...a!jz

【讨论】:

  • 是否可以将结果限制为 1 并在 userPosts 中获得第一个,还是我必须进行查询?
  • 是的。您可以添加limit(1) 调用并将其保存在Query 而不是CollectionReference 对象中。
  • 好的。非常感谢!我能够在您的帮助下解决问题
猜你喜欢
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
相关资源
最近更新 更多