【问题标题】:How to retrieve/fetch items from Firebase Real Time Database如何从 Firebase 实时数据库中检索/获取项目
【发布时间】:2020-09-14 15:31:54
【问题描述】:

我是编程新手,从Flutter开始,跟着一些教程慢慢进步。

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

所有项目都保存在订单下>Unique-uid-Stirng>Key>字段

我可以使用此 URL 检索单个项目:

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

以下前两个 url 仅检索登录用户字段

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

或者是否有任何替代方法可以实现相同的效果(已编辑:仅寻找真正的数据库解决方案)。

不胜感激,谢谢。

【问题讨论】:

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


    【解决方案1】:
    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.
    

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 2021-03-25
      • 2018-09-11
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      相关资源
      最近更新 更多