如何在Flutter中获取嵌套Firebase数据上的所有子数据?

时间:2019-02-06 23:37:59

标签: firebase firebase-realtime-database flutter

我想基于Firebase Auth中的用户ID显示所有(嵌套的)Firebase Realtime数据库数据。我使用Flutter Android。

我的数据库是这样的:

enter image description here

我的代码大概是这样的:

home.dart

class Todo {
  int datetime;
  double current;
  double voltage;
  String key;
  bool status;
  String userId;

  Todo(this.datetime, this.userId, this.status, this.current, this.voltage);

  Todo.fromSnapshot(DataSnapshot snapshot)
      : key = snapshot.key,
        status = snapshot.value["status"],
        datetime = snapshot.value["datetime"],
        current = snapshot.value["current"],
        voltage = snapshot.value["voltage"];

  toJson() {
    return {
      "status": status,
      "datetime": datetime,
      "current": current,
      "voltage": voltage,
    };
  }
}

和我的模型课:

todo.dart

var request = require('request');
var cheerio = require('cheerio');
var searchTerm = 'baloncesto';
var url = 'http://mismarcadores.com/' + searchTerm;
request(url , function(err,resp,body){
    $ = cheerio.load(body)
    var allLinks = []
    links = $('a');
    $(links).each(function(i,link){
        console.log(url+$(link).attr('href'))
        var currentLink = url+$(link).attr('href')
        allLinks.push(currentLink)
        if (i == links.length-1){
          useLinks(allLinks)
        }
    }
   )
})

function useLinks(allLinks){
  console.log(allLinks)
}

我已经做到了。

但是,如果我将数据库更改为这样的东西(添加嵌套子项),该怎么办: enter image description here

如何从用户ID Firebase身份验证获取所有子数据?

预先感谢

1 个答案:

答案 0 :(得分:1)

在构造数据库时,需要考虑到它必须是平面结构。如果将结构更改为第二张图像,则可以执行以下操作:

final FirebaseDatabase _database = FirebaseDatabase.instance;
User currentUser = FirebaseAuth.instance.currentUser;

var ref = _database.reference().child(currentUser.uid);
ref.once().then((DataSnapshot snapshot){
   print(snapshot.value);
   print(snapshot.key);
    snapshot.value.forEach((key,values) {
         print(values);
   });
});

这里首先获取数据库的实例并获取当前登录的用户,然后使用once()来获取数据,以便能够访问嵌套的字段,然后必须使用{{1} }在forEach()内部进行迭代。