【问题标题】:How to read React native Firebase Cloud firestore Data如何读取 React 本机 Firebase Cloud Firestore 数据
【发布时间】:2020-12-25 04:03:54
【问题描述】:

我开始使用实时数据库创建我的 react 本机 android 应用程序,但后来意识到我无法执行一些查询(例如 where),所以我更改为 cloud firestore,但我发现将用于实时数据库的代码更改为云时遇到问题火库。我有这个用于运行良好的实时数据库

firebase.database().ref('/users').on('value', (snapshot) => {
      let data = snapshot.val();
      let items = Object.values(data);
      this.setState({items});
   }).catch(function(error) {
         var errorCode = error.code;
         var errorMessage = error.message;            
           this.setState({ errorMessage: errorMessage })            
       });

我已尝试在 cloud firestore 中生成上面的代码,如下所示,但不起作用(弹出类型错误并指出 snapshot.val 不是函数)。

firebase.firestore().collection('users').get().then((snapshot)=>{              
        let data = snapshot.val();
        let items = Object.values(data);
        this.setState({items});
     }).catch(function(error) {
         var errorCode = error.code;
         var errorMessage = error.message;            
           this.setState({ errorMessage: errorMessage })            
       });

这是在我的数据库项目中 我怎样才能产生相应的 Cloud Firestore 代码?

【问题讨论】:

  • 您的代码没有检查错误,因此可能出现问题,而您不知道。我们也看不到您在“用户”下是否有任何文档,因此您的查询可能只是没有返回任何内容,因为没有数据。请编辑问题以更详细地解释什么不符合您的预期。

标签: firebase react-native google-cloud-firestore


【解决方案1】:

您的代码无法正常工作,因为它无法正确使用 Firestore API。您的查询:

firebase.firestore().collection('users').get()

将根据您在集合中的内容获取具有零个或多个文档QuerySnapshot。您将需要使用 QuerySnapshot API 在结果中迭代可能的文档。现在,您在 QuerySnapshot 上调用 val(),这不是一个有效的方法。 API 与实时数据库有很大不同。

您的代码应改为迭代结果集中的文档以找出查询返回的内容,如下所示:

firebase.firestore().collection('users').get().then((querySnapshot) => {
    querySnapshot.forEach(snapshot => {
        let data = snapshot.data();
        console.log(data);
    }
})

我建议查看documentation for Firestore queries,并遵循那里的模式。同样,它与 RealtimeDatabase 非常不同,因此您将无法在 Firestore 中重复使用您对它的了解。

【讨论】:

  • 如果您有新问题,请单独发布。
猜你喜欢
  • 1970-01-01
  • 2018-11-10
  • 2018-10-26
  • 1970-01-01
  • 2019-10-22
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多