【问题标题】:Flutter - how can i update the data to the realtime datebase on firebase and find those keys if i dont know itFlutter - 我如何将数据更新到 firebase 上的实时数据库并在我不知道的情况下找到这些键
【发布时间】:2020-06-02 18:05:00
【问题描述】:

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

【问题讨论】:

  • 不要说你不知道的,而是告诉我们你知道关于你想更新的订单的什么。完成此操作后,只需启动查询以查找具有您知道的值的节点,然后通过它们的键更新这些节点。
  • 就我的理解而言,我知道我可以使用它们的密钥更新这些订单,但是有什么方法可以获得这些密钥?就像我不知道密钥“-sSDW3”一样。如何更新此订单行中的数据?有没有办法在颤振中找到它?
  • 要获取密钥,您需要执行一个查询。例如,请参阅我的答案(虽然不是 Flutter):stackoverflow.com/questions/60252141/…

标签: flutter firebase-realtime-database dart


【解决方案1】:

您必须确保每当您向数据库添加新项目并生成 autoId 时,database-generated-id 应该是您使用的模型类的 id保存项目中的数据。因此,无论何时进行更新,将 id 引用为数据库密钥都可以让您访问要更新的产品。

参见下面的示例代码:

...
//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:)

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2023-03-10
    • 2018-06-20
    相关资源
    最近更新 更多