处理实时数据库中的用户帐户数据

Firebase 身份验证系统是用户 uiddisplayNamephotoURLemail 的来源。基于密码的帐户通过 .updateProfile 方法在 auth 系统中设置这些持久值。将这些值存储在实时数据库中,rDB,users 节点会产生过时数据的问题。例如,显示名称可能会更改。为了使这些值保持同步,请使用与 .onAuthStateChange 一致的本地存储

在每个 .onAuthStateChange

  • getItem('displayName')getItem('photoURL')
  • user.displayNameuser.photoURL 相比
  • 如果不同
    • setItem('displayName')setItem('photoURL')
    • db.ref.child('users').update displayName 和/或 photoURL 的值

.onAuthStateChange 会在每个页面加载或重新加载时触发,也会在每次身份验证状态更改时触发。它可能经常发生,例如多页面应用程序。但是,对本地存储的读写是同步且非常快,因此对应用程序性能没有明显影响。