【问题标题】:Firestore make function trigger once opening the App, then after changesFirestore 使功能在打开应用后触发,然后在更改后触发
【发布时间】:2021-08-06 01:30:16
【问题描述】:

我希望这个功能在我启动应用程序后触发,然后每次我的 firestore 数据发生变化。

export const getDuettsPlayer1 = (setDuetts) => {
  duettsRef.where("player1", "==", firebase.auth().currentUser.uid)
    .get()
    .then((querySnapshot) => {
      setDuetts(querySnapshot.docs.map(doc => doc.data()));
    })
    .catch((error) => {
      console.log("Error getting document:", error);
    });
}

我已经这样试过了:

const getDuettsPlayer1 = (setDuetts) => {
  duettsRef.where("player1", "==", firebase.auth().currentUser.uid)
  .onSnapshot((querySnapshot) => {
      setDuetts(querySnapshot.docs.map(doc => doc.data()));
    })
    .catch((error) => {
      console.log("Error getting document:", error);
    });
}

,但后来我得到了 TypeError: undefined is not a function (near '...}).catch(function (error) {...') 我该如何正确地做到这一点?

【问题讨论】:

  • 您能给出引发该错误的准确代码吗?
  • 我添加了代码,它会抛出该错误。

标签: javascript reactjs firebase react-native google-cloud-firestore


【解决方案1】:

onSnapshot 不返回承诺,因此它没有 catch 方法。

您可以通过传入第二个侦听器来处理错误:

  duettsRef.where("player1", "==", firebase.auth().currentUser.uid)
  .onSnapshot((querySnapshot) => {
      setDuetts(querySnapshot.docs.map(doc => doc.data()));
    }, (error) => {
      console.log("Error getting document:", error);
    });

另请参阅 listening for errors 上的 Firestore 文档

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2021-09-14
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多