J'essaie donc de supprimer le champ Notes[1], selectedNote a une valeur du tableau sélectionné que je dois supprimer.

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

Donc j'essaye d'utiliser ça

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

Pour supprimer la note sélectionnée qui est le tableau 1 par exemple à l'intérieur de Notes. Je ne veux pas que le champ Notes entier soit supprimé, mais uniquement le tableau sélectionné à l'intérieur du champ Notes. Pour une raison quelconque, j'ai du mal à le faire fonctionner. Toute aide serait appréciée <3

0
CodingIsFun33 25 févr. 2020 à 08:59

1 réponse

Meilleure réponse

Les tableaux Firebase n'utilisent pas d'index pour leurs tableaux, mais nécessitent la valeur de l'entrée du tableau. cela signifie que vous ne pouvez pas vous en sortir avec des données dupliquées.

Vous devrez d'abord récupérer le tableau "Notes" et renvoyer sa valeur à partir de son index. Bien que j'aie entendu dire que les tableaux peuvent revenir dans le désordre car ils ne reposent pas sur un index.

Changer cette ligne ;

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

Pour ça;

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

Je vous recommanderais d'extraire la valeur du tableau d'une variable stockée localement pour vous assurer que les valeurs correspondent avant et après l'édition.

0
DIGI Byte 25 févr. 2020 à 20:11