如果.then失败,我如何执行语句

时间:2018-09-04 08:30:06

标签: javascript database firebase google-cloud-firestore

   firestore.collection("Something").where("User2", "==", "")
    .get()
    .then(function(querySnapshot) {    
        querySnapshot.forEach(function(doc) {
            const docRef = firestore.collection("Something").doc(doc.id); 
            docRef.update({

                User2: messageseqno,
        })
    })
    .catch(error => {
    console.log(error);
        const docRef = firestore.collection("Something").doc(); 
          var nullvalue = "";

          docRef.update({

              User1: messageseqno,
              User2: nullvalue,

          })
    });
    })

我需要它来像if-else语句一样执行。考虑到。那么,如果我能做些什么。

上面的代码显示了一个错误

  

“无法读取未定义的属性'catch'”

2 个答案:

答案 0 :(得分:1)

更新:我将.catch放在then函数中。它应该在之后直接出现,为您的错字感到抱歉。

在.then之后使用.catch。 catch方法为我们提供了一个错误对象。

firestore.collection("Something").where("User", "==", input)
.get()
.then(function(querySnapshot) {    
    querySnapshot.forEach(function(doc) {
        const docRef = firestore.collection("Something").doc(doc.id); 
        docRef.update({

            //set of statements if .then is true

        })
    })
})
.catch(error => {
  console.log(error);
  // Do stuff when query fails
 });

答案 1 :(得分:0)

您也可以在try-catch块中为此使用async和await语法

async function getRecords() {

try {
const records = await firestore.collection("Something").where("User2", "==", "")
    .get();
    
    
    
    //do stuff with records as an array
    
    
    records.forEach(function(doc) {
        const docRef = firestore.collection("Something").doc(doc.id); 
        docRef.update({

            //set of statements if .then is true

        })
        }
}
catch(e) {
console.log("Error",e.message);
//handle your exceptions here
}

}