当前位置: 首页 > 知识库问答 >
问题:

如何读取React本地Firebase Cloud firestore

鲍健柏
2023-03-14

我开始使用实时数据库创建react原生android应用程序,但后来意识到我不能执行一些查询(比如哪里),所以我改到了云firestore,但我发现将实时数据库的代码改到云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中生成上面的代码,如下所示,但不起作用(弹出一个typeerror并声明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 })            
       });

共有1个答案

卫松
2023-03-14

您的代码不能正常工作,因为它不能正确地使用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);
    }
})
 类似资料:
  • 我试图通过创建一个函数来编写一个简单的文本文件阅读器,该函数接受文件的路径并将每行文本转换为char数组,但它不起作用。 这里出了什么问题? 从以前的修订版更改了一点代码后,这似乎仍然不起作用,现在它给我一个异常101。 我在Firefox上测试过这个功能,它可以工作,但在Google Chrome上它就是不工作,它一直给我一个异常101。我如何让它不仅适用于Firefox,还适用于其他浏览器(尤

  • 问题内容: 我正在尝试通过创建一个接受文件路径并将文本的每一行转换为char数组的函数来编写一个简单的文本文件阅读器,但是它不起作用。 这是怎么了? 从先前的版本中稍稍更改了代码后,这似乎仍然不起作用,现在给了我一个例外101。 我已经在Firefox上对其进行了测试,并且可以工作,但是在Google Chrome中它却无法工作,并且一直给我一个异常101。如何使它不仅可以在Firefox上而且还

  • 问题内容: 我想优化此代码: 事情是,我不知道如何读取bufferedReader的内容并将其复制到String中,比我上面的速度更快。我需要花费尽可能少的时间。谢谢 问题答案: 在循环中使用字符串连接是 在 经典的性能杀手(因为字符串是不可变的,整个越来越大的字符串被复制为每个连接)。改为这样做:

  • 问题内容: 如何使用JQuery.getJSON()读取当前目录中的文件? 我正在尝试一些简单的操作(将data.json文件与html文件放在同一目录中): 我得到错误: XMLHttpRequest无法加载file:/// C:/Projects/test/data.json。Access-Control-Allow- Origin不允许使用Origin null。 我尝试了各种路径组合,但似

  • 我想读取本地存储的xml,并且我想通过javascript进行读/写。我的代码如下 在这种情况下,xmlhttp.responseXML为空。

  • 问题内容: 我已经在本地系统中保存了一个JSON文件并创建了一个JavaScript文件,以便读取JSON文件并打印出数据。这是JSON文件: 假设这是JSON文件的路径:。 有人能帮我写一个简单的代码来读取JSON文件并以JavaScript打印数据吗? 问题答案: 由于使用HTTP发出请求,因此您 无法 对本地资源进行AJAX调用。 一种解决方法是运行本地Web服务器,提供文件并对localh