【问题标题】:Firestore break out of a queryFirestore 中断查询
【发布时间】:2021-01-19 05:08:43
【问题描述】:

如果已经发布了相同的帖子,我有如下代码不写入数据库。

我放了一个return,但self.addtoDB() 仍然被执行。检查现有帖子而不写入数据库(如果存在)的正确方法是什么?

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();

【问题讨论】:

    标签: javascript firebase vue.js google-cloud-firestore nuxtjs


    【解决方案1】:

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

        .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();
          }
        })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 2018-04-11
      相关资源
      最近更新 更多