Как я могу удалить последний элемент в списке в базе данных в реальном времени в firebase? - PullRequest
0 голосов
/ 20 апреля 2019

Я создаю простое приложение todo в Javascript и использую базу данных firebase в реальном времени в качестве базы данных для хранения задач для каждого пользователя.Получение и запись данных работает нормально, но проблема появляется, когда я хочу удалить что-то из списка.В частности, я хочу удалить последний элемент при нажатии кнопки.

Вот так выглядит моя база данных:

Tasks database

А вот код для получения данных:

db.on('child_added', snapshot => {

    let span = document.createElement('span');
    span.setAttribute('class', 'listItem');
    let textNode = document.createTextNode(snapshot.val().name + `\n`);
    span.appendChild(textNode);

    snapshot.forEach(() => {
        if(snapshot.val().uid == user.uid) {
            todoListContent.appendChild(span);
        }
    });
});

1 Ответ

0 голосов
/ 21 апреля 2019

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

В вашем случае сохранение ключа кажется наиболее простым, связав его с spanвы создаете:

db.on('child_added', snapshot => {

    let span = document.createElement('span');
    span.setAttribute('id', snapshot.key); // store the key for later reference
    span.setAttribute('class', 'listItem');
    let textNode = document.createTextNode(snapshot.val().name + `\n`);
    span.appendChild(textNode);

    snapshot.forEach(() => {
        if(snapshot.val().uid == user.uid) {
            todoListContent.appendChild(span);
        }
    });
});

Теперь, когда пользователь нажимает на span, чтобы удалить этот узел, вы получаете ключ из его атрибута id, а затем можете удалить узел с помощью:

let key = span.id;
 db.child(key).remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...