Firestore 中断查询

Firestore break out of a query

如果相同的 post 已经被 post 编辑,我有如下代码不写入数据库。

我放了一个return但是self.addtoDB()还是被执行了。检查现有 post 并且如果存在则不写入数据库的正确方法是什么?

db.collection("posts")
    .where("ytid", "==", self.youtubeId)
    .get()
    .then(function(querySnapshot) {
      querySnapshot.forEach(function(doc) {
        // doc.data() is never undefined for query doc snapshots
        console.log(doc.id, " => ", doc.data());
        alert("This gameplay has already been posted");
        return;
      });
    })
    .catch(function(error) {
      console.log("Error getting documents: ", error);
    });
  self.addToDB();

像所有 return 承诺的函数一样,get() return 立即执行,您提供给 then 的回调将在查询完成后的某个时间调用。您的代码在那之后立即继续执行 self.addToDB(),而无需等待结果。您应该改为在该回调中执行 all 条件处理。

    .then(function(querySnapshot) {
      if (querySnapshot.docs.length > 0) {
        const doc = querySnapshot.docs[0];
        console.log(doc.id, " => ", doc.data());
        alert("This gameplay has already been posted");
      }
      else {
        self.addToDB();
      }
    })