首页 > 解决方案 > 如何从 Cloud Firestore 中检索多个文档,但没有重复?

问题描述

我想从文档列表中随机提取文档。目前,它有效,但我会再次收到相同的文件,但我不想。

let qnumber = Math.floor((Math.random() * 3) + 1);
const dialogflowAgentDoc = db.collection('esequiz').doc(''+qnumber);

那么如何编辑它,以免从随机文档中提取任何重复项?

所以我的云火库看起来像这样,因此我使用 qnumber 来确定组成的随机数,然后调用到 db 集合中。

在此处输入图像描述]

标签: javascriptgoogle-cloud-firestoredialogflow-es-fulfillment

解决方案


您需要跟踪检索到的文档的 ID,并丢弃已经检索到的随机 ID。

伪代码:

class UniqueRandomIdProvider()
{
   alreadyRetrieved: number[] = [];

   public getNewRandomId(): number {
     while(true) {
     {
        const randomId = this.getRandomId();
        if (!this.alreadyRetrieved.contains(randomId) {
            return randomId;
        }   
     }

   }

   private getRandomId(): number {
      return Math.floor((Math.random() * 3) + 1);
   }
}

推荐阅读