Staram się usunąć wartość z tablicy, ale można znaleźć tylko przykłady tego, gdzie otrzymuje się index wartości pierwszej, a następnie wartość zostanie usunięta przy użyciu splice.

Nie mam indeksu, tablica jest po prostu:

enter image description here

Muszę usunąć ANONYMOUS i dodaj NON_ANONYMOUS

const userRef = firebase.db.collection('users').doc(userId);

    firebase.db
        .runTransaction(transaction => {
            // This code may get re-run multiple times if there are conflicts.
            return transaction.get(userRef).then(doc => {
                if (!doc.exists) {
                    console.log('Transaction failed: User dont exist!');
                    return;
                }

                const newRoles = doc.data().roles;
                newRoles.push(ROLES.NON_ANON);
                // HERE I MUST REMOVE THE ROLE ANONYMOUS 
                transaction.update(userRef, { roles: newRoles });
            });
        })
        .then(function (newRoles) {
            console.log(`Transaction successfully committed! ${newRoles}`);
        })
        .catch(function (error) {
            console.log('Transaction failed: ', error);
        });

Próbowałem w ten sposób

const newRoles= newRoles.splice(newRoles .indexOf('anonymouse'), 1);

Ale to nie działa. Co zrobiłem źle?

0
Kid 25 październik 2020, 00:55

1 odpowiedź

Najlepsza odpowiedź

Struny rozróżniają wielkość liter w JavaScript. Twój kod szuka "Anonymouse", ale tablica zawiera "Anonymous". Musisz przekazać dokładny ciąg do usunięcia. Proponuję rejestrowanie ostatniej wartości tablicy, zanim aktualizujesz go, aby upewnić się, że rzeczywiście go usunęłeś.

1
Doug Stevenson 24 październik 2020, 22:00