Flutter Firebase如何获取随机文档

时间:2020-08-07 13:06:22

标签: firebase flutter dart google-cloud-firestore

我正在尝试从Firebase获得一些随机帖子。但是我无法获得随机的文档ID。

有没有办法像这样从Firebase检索数据:-

  getRandomData() async {
QuerySnapshot snapshot = await posts
    .document(random.id)
    .collection('userPosts')
    .getDocuments();}

我想这么说。现在,我通常可以使用斜体字获取文档ID,因此现在如何从Firebase获取随机文档ID。

enter image description here

3 个答案:

答案 0 :(得分:1)

首先在列表中列出documentIds

var list = ['documentId1','documentId2','documentId3'];

var element = getRandomElement(list);

然后查询documentSnapshot

答案 1 :(得分:1)

您可以先获取集合中的所有文档。

尝试以下代码:

async getMarker() {
    const snapshot = await firebase.firestore().collection('userPosts').get()
    const documents = [];
    snapshot.forEach(doc => {
       documents[doc.id] = doc.data();
    });
    return documents;

接下来,您可以从退货凭证中创建凭证ID列表,并从该列表中获取随机数(凭证ID)。

答案 2 :(得分:0)

这里要阻止您前进的主要问题是,实际上您没有在“帖子”下立即嵌套任何文档。请注意,文档名称以斜体显示。这意味着这里根本没有文档。之所以显示它们,是因为您在该文档ID所在的路径下嵌套了一个子集“ userPosts”。

由于您在“帖子”下根本没有任何文档,因此find a random document的常规策略根本行不通。您将必须实际在其中填充一些数据以进行选择,或者找到另一种方法从子集合中的数据中进行选择。