javascript - Firebase 单次调用?

标签 javascript reactjs firebase

我在 React 应用程序中使用 firebase,但遇到了一些问题。

我正在从我的收藏中查询 N 个项目。但在这个特定的查询中,我对 Firebase 的实时方面不感兴趣,因为我将数据加载到组件的状态中,并且事件监听器使状态不断刷新并更改页面内容(我不这样做)不想)。

那么,有没有一种方法可以像使用 MongoDb 或任何其他非实时数据库那样进行“静态”查询?

还有一种方法可以立即从集合中检索所有元素,而无需监听更改?我现在正在使用它,如下所示:

postsRef.startAt().orderByChild('likes')
        .on(
          'child_added',
          (snapshot) => {
            this.setState({
              media: [...this.state.media, snapshot.val()],
            });
          },
        );

但这远非理想,因为我要一一获取它们,并且我更愿意获取包含所有它们的单个数组或对象。

谢谢!

最佳答案

如果您想一次性获取所有项目,请使用 on('value'once('value')。这将为您提供所有匹配子项的快照一次性节点。然后使用 Snapshot.forEach() 循环遍历结果:

postsRef.startAt().orderByChild('likes')
        .on(
          'value',
          (snapshot) => {
            snapshot.forEach((child) => {
              this.setState({
                media: [...this.state.media, child.val()],
              });
            });
          },
        );

关于javascript - Firebase 单次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719178/

相关文章:

javascript - Linux 下 node.js C++ 插件中的 undefined symbol ,为什么?

reactjs - sh : react-scripts: command not found

node.js - Firebase写入 "0"而不是实际的变量内容

android - 在 firebase 中使用名称、用户名等创建新用户

android - InAppMessage 显示后自动消失

javascript - 来自服务器或客户端的 HTTP 请求 - 最佳性能?

javascript - 如何将 JavaScript 元素转换为 Web 应用程序或 API?

javascript - 无法在动态创建的输入 id 上获取ElementById

reactjs - 从组件传递值作为参数状态或访问操作创建器中的状态?

Reactjs/Apollo/AppSync 突变触发两次