【问题标题】:Flutter: How to move a firebase node - API REST vs SDKFlutter:如何移动 Firebase 节点 - API REST 与 SDK
【发布时间】:2020-08-07 01:13:33
【问题描述】:

我在 Firebase 中有一个节点,它有多个子节点和子节点的子节点。我想将所有从一个地方移动到另一个地方,然后我使用 Firebase REST API 制作了一个函数,但我想对其进行优化并将其迁移到 SDK。

我在 API REST 中使用的功能是:

 Future<bool> moverLoteActual() async {
    
    //TO READ FROM SOURCE PATH
    final urlLoteActual = '$_PATH_ORIGEN.../loteActual.json?auth=${_prefs.token}';

    final resp = await http.get(urlLoteActual);
    //TODO: Probably I neew an error management here

    //TO COPY IN DESTINATION
    final urlLotesCerrados = '$PATH_DESTINO.../lotesCerrados.json?auth=${_prefs.token}';

    final resp2 = await http.post(urlLotesCerrados, body: resp.body); 
    final decodedData2 = json.decode(resp2.body);
    print(decodedData2);

    //TO DELETE THE SOURCE NODE
    final resp3 = await http.delete(urlLoteActual);
    print(json.decode(resp3.body));

    return true;

  }

我尝试使用 SDK,但遇到很多解析错误,最后我认为我使用 API REST 实现的顺序方法不是最好的方法。

如何使用 SDK 获得这种位置变化?

【问题讨论】:

    标签: firebase flutter firebase-realtime-database


    【解决方案1】:

    我找到了解决办法。

    首先,您需要了解snapshot.value 是一个Map,然后您需要将答案(resp)分配给这种类型的地图。

    稍后,需要将节点复制到新位置,然后需要将之前的 Map 转换为新的其他类型(Map 编写

    最后一步(删除原始节点)很简单……标准功能。

    Future<bool> moverLoteActual() async {
    
      //TO READ FROM SOURCE PATH 
      Map<dynamic, dynamic> _map = new Map<dynamic, dynamic>();
      Query resp = db.child('$_PATH_ORIGEN.../loteActual');  
    
      final snapshot = await resp.once();
      _map = snapshot.value;
    
      //TO COPY IN DESTINATION
      db.child('$PATH_DESTINO.../lotesCerrados')
        .push().update(Map<String, dynamic>.from(_map));
    
      //TO DELETE THE SOURCE NODE
      db.child('$_PATH_ORIGEN.../loteActual').remove();
    
      return true;
    
    }
    

    PD。 db 是 Firebase 数据库参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2020-04-01
      • 2018-06-24
      • 1970-01-01
      • 2022-01-03
      • 2021-07-13
      相关资源
      最近更新 更多