【问题标题】:How to remove a document field using AngularFirestore?如何使用 AngularFirestore 删除文档字段?
【发布时间】:2018-07-08 14:47:24
【问题描述】:

根据Firestore docs 可以执行以下操作:

var cityRef = db.collection('cities').doc('BJ');

// Remove the 'capital' field from the document
var removeCapital = cityRef.update({
    capital: firebase.firestore.FieldValue.delete()
});

但是,使用 AngularFirestore,FieldValue 不可用:

如何使用 AngularFirestore 删除字段?

编辑:

  • 将字段值设置为 null 不会删除该字段
  • 不允许将字段值设置为 undefined

【问题讨论】:

    标签: firebase angularfire2


    【解决方案1】:

    要使用必须导入的 FieldValue.delete() 方法:

    import * as firebase from 'firebase/app';
    

    或者按照 camden_kid 的建议:

    import { firestore } from 'firebase/app';
    

    【讨论】:

    • 我试过了,但它没有删除该字段。我将更新问题以添加该信息。
    • 嗯,这很奇怪。您只需导入 import * as firebase from 'firebase/app'; 即可使用 FieldValue.delete();
    • 谢谢。导入有效,firebase.firestore.FieldValue.delete() 完成了这项工作。如果您更新答案,我会将其标记为正确。不过,我觉得它应该可以通过 AngularFirestore 实现。
    • 实际上,import { firestore } from 'firebase/app'; 可以工作并且是一个更简洁的解决方案。
    • 谢谢,我刚刚编辑了它。是的,我完全同意,angularfire2 也缺少一些东西,比如交易。我最终改用 Firebase Javascript SDK。
    【解决方案2】:

    对于 Angular12 / Firebase 9 / AngularFire 7 的导入应该如下所示:

    import firebase from 'firebase/compat/app';
    import 'firebase/compat/firestore';
    

    然后

    fieldName : firebase.firestore.FieldValue.delete()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 2022-01-01
      • 2019-05-03
      • 2019-01-09
      • 2023-04-09
      • 2019-11-25
      相关资源
      最近更新 更多