Angular Firebase身份验证发出两次,第一次是数据不完整
我的角度身份验证使用angularfire auth发出错误数据时遇到问题 身份验证流程非常普通:Angular Firebase身份验证发出两次,第一次是数据不完整,angular,firebase,authentication,angularfire,Angular,Firebase,Authentication,Angularfire,我的角度身份验证使用angularfire auth发出错误数据时遇到问题 身份验证流程非常普通: 将authState用户映射到数据库中的用户文档 通过行为主题发出用户文档更改 用户通过oAuth进行身份验证 数据库中的文档在使用oAuth提供程序的数据登录后更新 DB触发器应用一些附加元数据(例如上次修改) 当用户进行身份验证时,会发生以下情况:行为主体的订户接收到两种发射: 基于oAuth提供程序数据的用户数据(这是不完整的,因为它不包括用户文档中的数据),然后 数据库中的用户文档数据
- 将authState用户映射到数据库中的用户文档
- 通过行为主题发出用户文档更改
- 用户通过oAuth进行身份验证
- 数据库中的文档在使用oAuth提供程序的数据登录后更新
- DB触发器应用一些附加元数据(例如上次修改)
- 首先,oAuth登录后的用户更新导致本地缓存中的更新,该更新随后由可观察的(不完整的用户数据)发出
- (我已经通过禁用更新进行了测试,第一次发射没有发生)
- 稍后,DB触发器会更新DB中的文档,当该数据与客户端同步时,该数据会从可观察的用户文档中发出—这次是完整的用户数据
- 我对原因的假设正确吗?(本地更新,然后触发更新)
- 防止第一次本地更新并等待完整文档的最佳方法是什么
- 我是否应该只检查数据库记录中是否存在属性,而忽略其他更改
- 这个问题有没有更优雅的解决方案