【问题标题】:Retrieve data from Firebase with javascript使用 javascript 从 Firebase 检索数据
【发布时间】:2020-03-06 09:11:54
【问题描述】:

我制作了如下所示的 firebase 实时数据库:

现在我想在我的 javascript 代码中简单地获取这些数据(我正在使用 React-Redux-Saga 技术)

我的简化代码:

import * as firebase from 'firebase';

const result = yield firebase
  .database()
  .ref(`laivuzaidimas/`)
  .once('value');
console.log('result is retrieved: ', result);

检索数据后我在控制台中得到的信息:

我现在该怎么办?如何获取数据库中的数组?据我了解,我只有一个快照,现在我需要以某种方式提取我需要的东西?

【问题讨论】:

    标签: javascript reactjs firebase firebase-realtime-database react-redux


    【解决方案1】:

    你可以这样做:

    firebase.database().ref().once('value').then((snapshot) =>{
       console.log('result is retrieved: ', snapshot);
       snapshot.forEach((childSnap) => {
        let key   = childSnap.key;
        let photo = childSnap.val().photo;
        let name  = childSnap.val().name;
     });
    });
    

    使用once() 检索数据,由于once() 返回一个Promise,然后使用方法then() 等待数据完全检索。检索数据时,使用forEach 在数据内部循环并检索值。

    【讨论】:

    • 我可以用你的方法在控制台中打印快照,但如果我这样做,我不会打印 childSnap 或打印名称:console.log('childSnap: ', childSnap);常量 { 名称} = childSnap; console.log('name', name);
    • 我明白你的意思,但我的意思是它没有打印错误的值,但根本没有显示诸如“childsnap:”这样的控制台语句未定义(或等)
    • 虽然它会打印出我在问题中添加图片时的快照
    • 但是你添加了val()吗?如果你在它下面做let name = childSnap.val().name;console.log(name)`,那么它应该打印名称..
    • 我的意思是,当我执行 snapshot.forEach(childSnap => { console.log('foreach loop is looping!'); 我没有在控制台中得到任何东西
    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多