首页 > 解决方案 > 具有身份验证的 Firebase 快照侦听器

问题描述

如果以前有人问过这个问题,我深表歉意。

我已经通过 stackoverflow 进行了搜索,但没有找到我经常遇到的问题的答案。我正在开发一些使用 Firebase 开发的项目。

我经常有这样的数据结构:

collection A:
  - userID
  - attribute1
  - attribute2
(and so on)

然后在客户端上声明一些快照侦听器。我的问题是关于我应该在哪里声明我的快照监听器。

如果我的安全规则允许读取和写入集合 A(包括创建、更新和删除)如果userID文档的字段与登录用户的 id 相同,我应该如何声明我的快照侦听器?

我应该执行以下操作吗?

firebase.auth().onAuthStateChanged((user)=>{
  firebase.firestore().collection('collectionA').where('userID', '==', firebase.auth().currentUser.uid).onSnapshot((snapshot)=>{
  // DO STUFF HERE
}
)
})

要不就

firebase.firestore().collection('collectionA').where('userID', '==', firebase.auth().currentUser.uid).onSnapshot((snapshot)=>{
  // DO STUFF HERE
})

或者以上都不是?

标签: javascriptfirebasegoogle-cloud-firestorefirebase-authentication

解决方案


两者都是添加快照侦听器的有效方法,但是如果您有一个登录用户持久性localsession,则无需每次都添加 authchangeState 侦听器;可以直接使用第二种方法


推荐阅读