firebase.firestore.FieldValue.delete () не удаляет поле в документе - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь удалить поле в документе Firebase из приложения React, используя firebase.firestore.FieldValue.delete(), но оно не работает. Чтение и запись данных в документы и коллекции работает нормально, но я изо всех сил пытаюсь заставить работать FieldValue. Я настроил экземпляр Firebase в src/firebase.js следующим образом:

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()
    });
  }
};

Однако ни один вариант импорта или ссылки c на , упомянутые здесь , для меня не увенчались успехом. Я не получаю никаких ошибок, и я знаю, что экземпляр firestore работает правильно, потому что я использую его для установки и чтения тех же данных. Я также подтвердил, что field_id, который я пытаюсь удалить, является правильным идентификатором и что this.fv равен FieldValue, регистрируя их обоих консолью.

Чего мне не хватает? Я чувствую, что это должно быть очень легко и просто, и я упускаю что-то очень очевидное,

1 Ответ

2 голосов
/ 06 января 2020

Я предполагаю, что вы пытаетесь удалить поле, обозначенное 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)

Теперь вы используете значение из field_id в вызове Firestore, и он удалит fieldToDelete.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...