如何从Firebase实时数据库中检索/获取项目

时间:2020-05-27 14:34:20

标签: api rest flutter firebase-realtime-database firebase-authentication

我是编程的新手,从Flutter开始,跟随一些教程的进展缓慢。

我正在借助以下URL在 Firebase实时数据库上添加数据:

所有项目均在订单下保存> 唯一-uid-Stirng >键>字段

我能够使用以下URL检索单个项目:

我如何检索在不同uid下保存的所有记录,尝试了以下URL:

在前两个网址下方,仅检索已登录的用户字段

寻找类似以下网址的解决方案:

或者有没有其他方法可以使我达到同样的效果(编辑:仅在寻找Real Database Solutions)。

非常感谢您的回答。

1 个答案:

答案 0 :(得分:0)

final db = FirebaseDatabase.instance.reference().child("orders");
db.orderByKey().once().then((DataSnapshot snapshot){
  var uids = snapshot.value.keys;
  var data = snapshot.value;
    for (var key in uids) {
      var newList = data[key];
      print(newList);
    }

以上代码解决了我提出的另一种问题。

以下是作为管理员用户获取更改订单状态的完整代码:

Future<void> fetchAndSetAdminOrders() async {
List<OrderItem> orderList = [];
    final db = FirebaseDatabase.instance.reference().child("orders");
db.orderByKey().once().then((DataSnapshot snapshot){
  var uids = snapshot.value.keys;
  var data = snapshot.value;
    for (var key in uids) {
      var newList = data[key];
      print(newList);



  newList.forEach((orderId, orderData) {
    orderList.add(
      OrderItem(
        id: orderId,
        amount: orderData['amount'],
        status: orderData['status'],
        dateTime: DateTime.parse(orderData['dateTime']),
        products: (orderData['products'] as List<dynamic>)
            .map((item) => CartItem(
          id: item['id'],
          price: item['price'],
          quantity: item['quantity'],
          title: item['title'],
        ))
            .toList(),
      ),
    );

  });
    }
  _orders = orderList.reversed.toList();
  notifyListeners();
});}

工作正常,并显示所有订单及其状态,除了以下错误很少。

E/flutter (10256): A Orders was used after being disposed.
E/flutter (10256): Once you have called dispose() on a Orders, it can no longer be used.