javascript - Firestore 认为我离线,即使我不在
问题描述
我正在尝试使用 Firebase 为我的应用配置 Google 登录。我正在使用signInWithPopup
身份验证流程。成功登录后,如果是新用户,我想在 Firestore 中设置一个新文档并在 DynamoDB 中创建一个新项目。
auth.signInWithPopup(provider) /* ----------------> Creates a user instantly. I verified it in the Firebase Console. */
.then((value) => {
const isNewUser = value.additionalUserInfo.isNewUser;
if (isNewUser) {
console.log("This is a new User.")
const reference = firestore.collection('users').doc(value.user.uid);
reference.set({ /* ----------------> Doesn't create a document until I disconnect and reconnect my Internet. */
firstName: "",
lastName: "",
emailAddress: value.user.email,
organisation: "",
designation: "",
})
putTasks(value.user.uid, []) /* ----------------> Creates a new Document in DynamoDB instantly. */
一旦用户登录,就会在 Firebase 控制台中创建一个新用户。还会在 DynamoDB 中创建一个新文档。但是,在我断开并重新连接互联网连接之前,不会在 Firestore 服务器上创建用户的新文档。我没有启用持久性。出于某种原因,即使我不在,firestore 也会认为我处于离线状态。
有人可以告诉我为什么会这样吗?
解决方案
这个错误很奇怪,但是我想我可以给你一个提示。这可能与set
方法是异步的并且您没有等待它的事实有关。也许这个动作以某种方式被缓存。如果我站在你的立场上,我会使用一些简单then/catch
的方法来最终产生如下错误:
reference.set({ /* ----------------> Doesn't create a document until I disconnect and reconnect my Internet. */
firstName: "",
lastName: "",
emailAddress: value.user.email,
organisation: "",
designation: "",
}).then(() => {}, error => {
console.error(error);
}
现在代码将等待结果并给出最终错误。不幸的是,我不知道这是否会解决问题,因为我没有复制它,但也许您可以在故障排除中走得更远。
推荐阅读
- amazon-web-services - 从服务器迁移到 aws teamcity。我使用服务器移动还是导入?
- tensorflow-probability - 如何制作自定义张量流概率层?
- javascript - JavaScript中requestAnimationFrame中的frame是什么意思?
- python - 您如何处理这个特定程序中的(意外缩进)语法?
- ios - Flutter build ios 错误:为设备构建时遇到错误
- datetime - 如何使用 Moment 显示自定义日期和时间
- perl - 在连接 (.) 或字符串中使用未初始化的值 $login_output
- git - 来自差异排序差异的异常合并冲突?
- python - ODBC 使用托管标识连接到 SQL Server
- php - 我被难住了:如何使用 PHP Mailer 发送 HTML 表单