Пытаюсь удалить массив полей в firestore, но мой метод не работает - PullRequest
0 голосов
/ 25 февраля 2020

Поэтому я пытаюсь удалить поле Notes [1], selectedNote содержит значение выбранного массива, который мне нужно удалить.

window.addEventListener("load", function load(event) {
  document.getElementById("deleteNotes").onclick = function() {
    console.log("you did click atleast");
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        let user = firebase.auth().currentUser;
        let userInfo = db.collection("Users").doc(user.uid);
        userInfo.get().then(function(doc) {
          if (doc.exists) {
            let selectedNote = document.getElementById("noteSelect")
              .selectedIndex;
            console.log(selectedNote);
            var cityRef = db.collection("Users").doc(user.uid);
            cityRef.update({
             Notes: FieldValue.delete().arrayRemove(selectedNote)
            });
          }
        });
      }
    });
  };
});

Поэтому я пытаюсь использовать это

 cityRef.update({
             Notes: FieldValue.delete().arrayRemove(selectedNote)
            });

, чтобы удалить selectedNote, который является массивом 1, например, внутри Notes. Я не хочу, чтобы удалялось все поле Notes, а только выделенный массив внутри поля Notes. По некоторым причинам я изо всех сил пытаюсь заставить это работать. Любая помощь будет оценена <3 </p>

1 Ответ

0 голосов
/ 25 февраля 2020

Массивы Firebase не используют индексы для своих массивов, вместо этого им требуется значение записи массива. это означает, что вы не можете избежать дубликатов данных.

вам придется сначала извлечь массив «Заметки» и вернуть его значение из индекса. Хотя я слышал, что массивы могут возвращаться из порядок, потому что они не зависят от индекса.

изменить эту строку;

Notes: FieldValue.delete().arrayRemove(selectedNote)

на эту;

Notes: FieldValue.delete().arrayRemove(doc.data().Notes[selectedNote])

Я бы порекомендовал вам получить значение массив из хранимой переменной локально, чтобы обеспечить совпадение значений до и после редактирования.

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