You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase中DocumentReference.get(<Field>)无法读取布尔值问题求助

解决Firestore读取布尔字段isStore的问题

我来帮你排查这个读取字段的问题,你代码里的写法确实存在错误,咱们一步步修正:

问题所在

你代码里的db.collection('users').doc(uid).get('uid.isStore')是错误的:

  • get()方法如果要指定读取的字段,应该直接传字段名(比如'isStore')或者字段路径数组,而不是'uid.isStore'——因为isStore是users集合下对应uid文档里的直接字段,不是uid子字段下的属性。
  • 另外,调用get()后返回的是文档快照,你需要先判断文档是否存在,再通过正确的方式提取字段值。

修正后的代码示例

这里提供两种正确的读取方式,你可以根据需求选择:

方式1:使用get(fieldPath)指定单个字段

checkIfLoggedIn = () => {
  firebase.auth().onAuthStateChanged(user => {
    if (user) {
      const uid = user.uid; // 直接用回调里的user对象获取uid,不用重复调用currentUser
      const db = firebase.firestore();
      db.collection('users')
        .doc(uid)
        .get() // 先获取完整文档快照,也可以传['isStore']只读取指定字段
        .then(snapshot => {
          if (snapshot.exists) {
            // 用get()方法获取单个字段值
            const isStore = snapshot.get('isStore');
            console.log('isStore的值:', isStore);
            
            // 根据isStore的真假执行不同逻辑
            if (isStore) {
              // 当isStore为true时的代码
              console.log('当前是店铺账号');
            } else {
              // 当isStore为false时的代码
              console.log('当前是普通用户账号');
            }
          } else {
            console.log('未找到对应用户的文档');
          }
        })
        .catch(error => {
          console.error('读取文档时出错:', error);
        });
      this.props.navigation.navigate('mainNav');
    } else {
      this.props.navigation.navigate('signup');
    }
  });
};

方式2:使用data()获取整个文档数据再提取字段

如果需要读取多个字段,这种方式会更便捷:

// 在then的回调中替换成以下代码:
if (snapshot.exists) {
  const userData = snapshot.data();
  const isStore = userData.isStore;
  console.log('isStore的值:', isStore);
  
  // 后续的分支逻辑和上面一致
}

额外小提示

  • 不需要重复调用firebase.auth().currentUser.uid,onAuthStateChanged的回调参数user已经包含了当前用户的完整信息,直接用user.uid更高效。
  • 记得添加catch块处理读取文档时的异常,避免遗漏错误场景。

内容的提问来源于stack exchange,提问作者Arshia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:28:47