【问题标题】:How to delete a field in Firestore document with flutter如何使用颤振删除 Firestore 文档中的字段
【发布时间】:2019-01-09 00:59:09
【问题描述】:

我正在制作一个 Flutter 应用程序。

但是,我无法删除 Firestore 文档中的字段。 在另一种语言中,我知道使用 FieldValue.delete() 删除 Firestorm 文档中的文件。

在 Dart 中,如何删除?

【问题讨论】:

    标签: dart google-cloud-firestore flutter


    【解决方案1】:

    Flutter/Dart中编程时删除Field Path的官方解决方案

    Firestore 集合示例如下所示:

    {
       'path': {
          'name': { 
            'title': 'my title'
            'description': 'my description',
           }
       }
    }
    

    要删除description 字段,您可以这样做:

    Firestore.instance.collection('path').document('name').set(
        {'description': FieldValue.delete()},
        SetOptions(
          merge: true,
        ),
    )
    

    集合将如下所示:

    {
       'path': {
          'name': { 
            'title': 'my title'
           }
       }
    }
    

    【讨论】:

      【解决方案2】:

      获取DocumentReference,使用映射调用update,其中包含要删除的键和值FieldValue.delete()

      var collection = FirebaseFirestore.instance.collection('collection');
      collection
        .doc('document_id')
        .update({
          'field_to_delete': FieldValue.delete(),
          }
      );
      

      【讨论】:

        【解决方案3】:

        如果您有嵌套字段,请使用“.” (点)表示法来指定字段。

        例如,如果您的数据是嵌套的 Map,那么这很方便。

        Firestore.instance.collection('path').document('name').update({'address.town': FieldValue.delete()}).whenComplete((){
          print('Field Deleted');
        });
        

        【讨论】:

          【解决方案4】:

          2018 年 10 月更新:现在可能:

          为了从 Cloud Firestore 文档中删除特定字段 - 请确保您使用的是插件版本 0.8.0 或更高版本。 现在例如,如果您的文档具有“Desc”字段包含一些文本。为了删除它。

          Firestore.instance.collection('path').document('name').update({'Desc': FieldValue.delete()}).whenComplete((){
            print('Field Deleted');
          });
          

          这将从文档“名称”中删除“描述”字段

          【讨论】:

          • 这个解决方案似乎不再起作用了,我用你的代码here提出了一个单独的问题
          【解决方案5】:

          我认为这在标准的、非 hacky 的方式中目前是不可能的。 Flutter 中有一个未解决的问题https://github.com/flutter/flutter/issues/13905,必须先解决。

          【讨论】:

          • 谢谢。这一次,我决定使用删除标志删除一个字段。
          • 如何使用删除标志进行删除??
          • 哦,我真的不删除。如果删除标志为真,我只是忽略数据。 @PhuahYeeKeat
          猜你喜欢
          • 1970-01-01
          • 2023-01-29
          • 2020-12-16
          • 2021-08-11
          • 1970-01-01
          • 2021-01-25
          • 2018-04-09
          • 1970-01-01
          相关资源
          最近更新 更多