如何使用颤振删除 Firestore 文档中的字段

Posted

技术标签:

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

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

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

在 Dart 中,如何删除?

【问题讨论】:

【参考方案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

以上是关于如何使用颤振删除 Firestore 文档中的字段的主要内容,如果未能解决你的问题,请参考以下文章

颤振 |如何将数据添加到 Firestore 中的现有文档

如何使用颤振和飞镖从 Cloud Firestore 检索特定数据?

使用 Flutter 将表单上传到 Firestore

如何使用云功能删除 Firestore 中的文档

我无法在颤振 Firestore 上将字段设置为 NULL

FieldValue.delete() 不会删除 firestore 文档中的字段键