reactjs - 尝试更新 Firebase 实时数据库时发出警告
问题描述
我有一个带有 Firebase 的应用程序,用户可以在其中登录他们的帐户。唯一的问题是,当我想注销时,我想删除我之前保存在数据库中的一些信息,但由于某种原因,数据库没有更新并且出现以下警告消息:
错误:[数据库/权限被拒绝] 客户端无权访问所需数据
我猜这是因为更新代码没有足够的时间来执行指令。我的代码如下所示(由按下按钮触发):
onPressLogout = () => {
const { navigation } = this.props;
const userId = auth().currentUser.uid;
database().ref(`users/${userId}`).update({ tokens: '' });
auth().signOut().then(() => navigation.navigate('Auth'));
}
任何帮助表示赞赏。
解决方案
似乎注销发生在update
操作之前,然后由于用户不再登录而失败。
最简单的方法是等到写入完成后再退出。您可以使用以下方式执行此操作await
:
await database().ref(`users/${userId}`).update({ tokens: '' });
auth().signOut().then(() => navigation.navigate('Auth'));
或者更经典的then()
:
database().ref(`users/${userId}`).update({ tokens: '' }).then(()=> {
auth().signOut().then(() => navigation.navigate('Auth'));
})
推荐阅读
- elasticsearch - 在弹性搜索中进行标记时从文本中删除符号
- php - 向 WP Genesis 菜单添加类,不包括其他菜单
- java - 如何在 3d 场景上制作这样的侧边栏,使其不隐藏场景?
- elasticsearch - Range @Timestamp 没有在 Watcher Kibana 中给出结果
- bash - Bash while 循环直到 EOF
- javascript - 如何知道 puppeteer 使用的 Chromium 路径?
- vue.js - 在 vuetify 中更改网格中的列宽
- android - 如何从 buildSrc 中的自定义 Gradle 插件访问 Android 的“dynamicFeatures”属性
- arrays - 增加或插入 mongo 嵌套数组值
- django - 在 Django 数据库查询中计算百分比