【问题标题】:firebase.firestore.FieldValue.delete() not deleting field in documentfirebase.firestore.FieldValue.delete() 不删除文档中的字段
【发布时间】:2020-04-24 03:03:55
【问题描述】:

我正在尝试使用 firebase.firestore.FieldValue.delete() 从 React 应用程序中删除 Firebase 文档中的字段,但它不起作用。在文档和集合中读取和写入数据工作正常,但我很难让FieldValue 工作。我在src/firebase.js 中设置了 Firebase 实例,如下所示:

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

var config = {
  ******
};

class Firebase {
  constructor() {
    app.initializeApp(config);
    this.fv = app.firestore.FieldValue;
    this.db = app.firestore();
  };
};

export default Firebase;

然后在我正在尝试使用FieldValue 的模块中:

import Firebase from "./firebase.js";

class App extends Component {
  constructor(props) {
    super(props);
    this.firebase = new Firebase();
    this.db = this.firebase.db;
    this.fv = this.firebase.fv;
  };

  deleteFunction(id) {
    this.db.collection("collection_id").doc("doc_id").update({
      field_id: this.fv.delete()
    });
  }
};

但是,对于我来说,mentioned here 的导入或文档引用没有任何变化。我没有收到任何错误,并且我知道 firestore 实例工作正常,因为我正在使用它来设置和读取相同的数据。我还验证了我试图删除的 field_id 是正确的 id,并且 this.fvFieldValue 通过控制台记录它们。

我错过了什么?我觉得这应该非常简单直接,而且我忽略了一些非常明显的东西,

【问题讨论】:

  • 我刚刚尝试使用 "test" 作为字段 id 并做到了:this.db.collection("collection_id").doc("doc_id").update({ "test": this.firebase.fv.delete() }); 并且成功了。为什么不删除动态字段id?
  • 代码中的field_id 是什么意思?
  • 我正在为前端的字段生成一些 id,并使用它们来引用文档中的值。

标签: javascript reactjs firebase google-cloud-firestore


【解决方案1】:

我的猜测是您正在尝试删除由field_id 标识的字段,所以说:

// THIS WON'T WORK
let field_id = "fieldToDelete";
this.db.collection("collection_id").doc("doc_id").update({
  field_id: this.fv.delete()
})

上面的代码试图删除文字 field_id 字段,它可能不存在。

您需要使用 [] 表示法来构建传递给 Firestore 的对象。

let field_id = "fieldToDelete";
let updates = {};
updates[field_id] = this.fv.delete()
this.db.collection("collection_id").doc("doc_id").update(updates)

现在您在调用 Firestore 时使用了 field_id,它将删除 fieldToDelete

【讨论】:

  • 啊,好的,非常感谢!我不敢相信我没有注意到这一点。
猜你喜欢
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 2020-09-11
  • 2023-04-09
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多