首页 > 解决方案 > 尝试更新 Firebase 实时数据库时发出警告

问题描述

我有一个带有 Firebase 的应用程序,用户可以在其中登录他们的帐户。唯一的问题是,当我想注销时,我想删除我之前保存在数据库中的一些信息,但由于某种原因,数据库没有更新并且出现以下警告消息:

错误:[数据库/权限被拒绝] 客户端无权访问所需数据

我猜这是因为更新代码没有足够的时间来执行指令。我的代码如下所示(由按下按钮触发):

onPressLogout = () => {
  const { navigation } = this.props;
  const userId = auth().currentUser.uid;

  database().ref(`users/${userId}`).update({ tokens: '' });
  auth().signOut().then(() => navigation.navigate('Auth'));
}

任何帮助表示赞赏。

标签: reactjsfirebasereact-nativefirebase-realtime-database

解决方案


似乎注销发生在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'));
})

推荐阅读