Flutter - 我如何将数据更新到 firebase 上的实时数据库并在我不知道的情况下找到这些键

标签 flutter firebase-realtime-database dart

enter image description here

我是新来的,我想知道如果我不知道这些键,我如何在 firebase 上更新实时数据库中的数据。
例如,当我不知道这些键时,我想动态或单独将 partStatus 从“进行中”更改为“已交付”。

最佳答案

您必须确保每当您向数据库添加新项目并生成 autoId 时,数据库生成 ID 应该是 id用于在项目中保存数据的模型类。因此,每当进行更新时,引用 id因为数据库 key 可以让您访问要更新的产品。

请参阅以下示例代码:

...
//fetching logic here
 Future<void> fetchAndSetOrders() async {
    final url = 'https://<*firebase-project-name*>.firebaseio.com/orderList.json?auth=$authToken';
    //add try and catch errors
    try {
      final response = await http.get(url);
      final responseData = json.decode(response.body) as Map<String, dynamic>;
      if (responseData == null) {
        return;
      }
      List<OrderItem> loadedOrders = [];
      responseData.forEach(
        (orderId, orderData) => loadedOrders.add(
          OrderItem(
            orderNo: orderData['orderNo'],
            partNo: orderData['partNo'],
            status: orderData['partStatus'],
            qty: orderData['qty'],
            //**here id of order item is the orderId attached to the response 
            id: orderId,
          ),
        ),
      );
      _items = loadedOrders;
      notifyListeners();
    } catch (error) {
      //
    }
  }
...

现在更新订单..因为每个订单都有一个 id 等于数据库中数据项的键
...
Future<void> updateOrder(String orderId, OrderItem order) async {
    //note that i added the orderId to the url string
    final url = 'https://<*firebase-project-name*>.firebaseio.com/orderList/$orderId.json?auth=$authToken';
    await http.patch(
      url,
      body: json.encode({
        'orderNo': order.orderNo,
        'partNo': order.partNo,
        'partStatus': order.status,
        'qty': order.qty,
      }),
    );
  }
...

快乐编码 D:)

关于Flutter - 我如何将数据更新到 firebase 上的实时数据库并在我不知道的情况下找到这些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60285626/

相关文章:

ios - 如何在 tableView 上反射(reflect) childChanges - IOS Swift Firebase

java - Firebase 无法显示实时数据库中的名称

dart - 将 orElse 函数添加到 firstWhere 方法

android - Flutter 应用程序无法识别 Kotlin 文件

flutter - 禁用屏幕截图

json - 如何将JSON字符串转换为数字?

dart - 为什么将dart2js的输出复制并粘贴到控制台不起作用?

dart - 如何在 flutter 中降级 rxdart 插件?

java - 我正在尝试使用 firebase 制作登录页面和注册页面。我想使用 firebase 实时数据库来存储用户名和电子邮件

android - 如何让 Row 在 Flutter 中充分发挥其子项的高度?