javascript - Firestore 使功能在打开应用程序后触发,然后在更改后触发
问题描述
我希望这个功能在我启动应用程序后触发,然后每次我的 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) {...')
如何正确执行此操作?
解决方案
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);
});
另请参阅有关侦听错误的 Firestore 文档
推荐阅读
- python - 在 Flask 中执行 app.run(debug=True) 行时出错
- python - 使用 python 检测消息框或确定按钮
- arrays - 从角度6中的json api获取数组值
- request - Swift Alamofire 在 LAN 中发现
- c++ - 使用 C++ 的自动 Lua 绑定
- c# - C# MongoDB:解析 Json 字符串
- javascript - Chrome 扩展:标签刷新导致页面标题丢失 (YouTube)
- c - 函数...回文函数
- xcode - macOS 10.14 Mojave 无法打开 Xcode 8.3.3(立即崩溃)
- java - 在这个 if 构造中真的有必要“错误:变量 a 可能没有被初始化”吗?