pks*_*pks 2 javascript firebase reactjs google-cloud-firestore
我正在尝试从使用的 React 应用程序中删除 Firebase 文档中的字段,firebase.firestore.FieldValue.delete()但它不起作用。在文档和集合中读取和写入数据工作正常,但我正在努力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;
Run Code Online (Sandbox Code Playgroud)
然后在我正在尝试使用的模块中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()
});
}
};
Run Code Online (Sandbox Code Playgroud)
然而,这里提到的导入或文档引用的变化对我来说没有成功。我没有收到任何错误,我知道 firestore 实例工作正常,因为我使用它来设置和读取相同的数据。我还验证了field_id我试图删除的 id 是正确的,这this.fv是FieldValue通过控制台记录它们的。
我错过了什么?我觉得这应该非常简单直接,而且我忽略了一些非常明显的东西,
我的猜测是您正在尝试删除由 标识的字段field_id,所以说:
// THIS WON'T WORK
let field_id = "fieldToDelete";
this.db.collection("collection_id").doc("doc_id").update({
field_id: this.fv.delete()
})
Run Code Online (Sandbox Code Playgroud)
上面的代码试图删除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)
Run Code Online (Sandbox Code Playgroud)
现在您在调用 Firestore 时使用 的值,field_id它将删除fieldToDelete。