reactjs - 未捕获的类型错误: snap.data() 未定义
问题描述
当我注册时,它在浏览器上显示以下错误,但用户被添加到 firebase 并且刷新浏览器时没有错误。
这是我的代码片段。
fb.firestore
.collection('chatUsers')
.doc(authUser.uid)
.onSnapshot(snap => {
setChatConfig({
userSecret: authUser.uid,
avatar: snap.data().avatar,
userName: snap.data().userName,
projectID: '###################',
});
})
解决方案
没有看到数据库很难说。根据 Firebase 文档,如果调用中的指定文档不存在,则.data()
返回。undefined
.doc()
因此,因为snap.data()
正在返回undefined
,所以该位置的文档似乎在authUser.uid
集合中不存在chatUsers
。
也许检查您的链上游的某些值。也许authUser.uid
最初是null
直到从数据库中获取用户数据?在不了解您的项目的情况下,这是一个猜测。
onSnapshot()
另一个想法是处理回调函数中不存在文档的可能性。例如:
fb.firestore
.collection('chatUsers')
.doc(authUser.uid)
.onSnapshot(snap => {
if (snap.data() === "undefined") {
console.log("no user")
} else {
setChatConfig({
userSecret: authUser.uid,
avatar: snap.data().avatar,
userName: snap.data().userName,
projectID: '###################',
});
}
})
希望这有所帮助。
推荐阅读
- python - 如何根据列表特定条件从列表创建数据框
- google-bigquery - Big Query 漂亮的打印字符串值用 \ 转义
- makefile - CMake:生成忽略错误的 Unix Makefile
- python - 在 Jenkins 上运行 Python 脚本
- python - 如何组织 Python API 模块使其整洁?
- css - 通过 cognitoConfig.yaml 文件自定义 AWS cognito 登录页面 CSS
- html - Gmail 忽略显示无
- python-3.x - "TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'" ,用于 arrDecode 上的随机数数组
- qt - Yocto:如何在不全部重建的情况下删除图层
- c++ - 将元素添加到向量