首页 > 解决方案 > 如何从云 Firestore 中提取非重复文档?

问题描述

所以目前这些代码是提取我存储在我的数据库中的文档的原因,我想添加条件来提取某些文档,但不是重复的。

我如何编辑代码以使拉取的任何文档都不会被拉取?

我尝试使用while循环,但它在这两行出现了这个错误

.then(doc => {

并且

}).catch(错误 => {

在此处输入图像描述

let qnumber = Math.floor((Math.random() * 3) + 1);

agent.add('Question No: ' + count);
count += 1;
const dialogflowAgentDoc = db.collection('esequiz').doc(''+qnumber);

return dialogflowAgentDoc.get()
  .then(doc => {
    if (!doc.exists) {
      agent.add('Question '+qnumber+' not available');
    } else {
        // agent.add('Quiz Question '+ qnumber);
        agent.add(doc.data().question); 
        let answer = Math.floor(Math.random() * 2) + 1;
        if(answer == 1){
            agent.add(`1. ` + doc.data().right); 
            agent.add(`2. ` + doc.data().wrong); 
        }
        else{
            agent.add(`1. ` + doc.data().wrong); 
            agent.add(`2. ` + doc.data().right); 
        }
        agent.add("Which is correct, 1 or 2?");
        agent.context.set({
              name:'quizanswer',
              lifespan: 3,
              parameters:{
                  qnumber:qnumber,
                  right:answer,
                  count:count
              }
          });
    }
    return Promise.resolve('Read complete');
  }).catch(err => {
    agent.add('Error reading entry from the Firestore database.');
    agent.add('Error: '+ err);
  });

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

解决方案


没有任何 API 可以从 Firestore 中检索唯一值。但是您可以通过合并模型中的两个唯一项目来创建唯一 ID,并在此基础上获取记录。

extraParm = userID + anyOtherUniqueID

https://medium.com/@jqualls/firebase-firestore-unique-constraints-d0673b7a4952


推荐阅读