我正在尝试从Firebase获得一些随机帖子。但是我无法获得随机的文档ID。
有没有办法像这样从Firebase检索数据:-
getRandomData() async {
QuerySnapshot snapshot = await posts
.document(random.id)
.collection('userPosts')
.getDocuments();}
我想这么说。现在,我通常可以使用斜体字获取文档ID,因此现在如何从Firebase获取随机文档ID。
答案 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的常规策略根本行不通。您将必须实际在其中填充一些数据以进行选择,或者找到另一种方法从子集合中的数据中进行选择。