я хочу найти ребенка в базе данных, затем удалить его, но он не будет работать здесь - PullRequest
1 голос
/ 29 февраля 2020

Я хочу найти определенного пользователя c в ссылке (likers), затем удалить его, но он не будет работать, и он предупреждает "likers", когда я предупреждаю (this.liker) не ключ пользователя в ref (пользователь)

вот база данных

и вот код

firebase.database().ref('posts/-M13xC_yeIsj342A75pz/likers')
            .orderByChild('user')
            .equalTo('fHI1izTOJ5VeC7ZnjXUducickzj1'/* 'PCrBx38NcjZdsgmRS805sk7lgWn1' firebase.auth().currentUser || {}).uid */)
            .on('value', snap => {
               this.liker =  snap.key
               alert(this.liker)
            })
            firebase.database().ref('posts').child(this.props.postKey/*'-M0IviCqMGE_PxoqNd0W'*/).child('likers').child(key).remove()

1 Ответ

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

Когда вы выполняете запрос к базе данных Firebase, потенциально может быть несколько результатов. Таким образом, снимок содержит список этих результатов. Даже если есть только один результат, снимок будет содержать список из одного результата.

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

firebase.database().ref('posts/-M13xC_yeIsj342A75pz/likers')
        .orderByChild('user')
        .equalTo('fHI1izTOJ5VeC7ZnjXUducickzj1'/* 'PCrBx38NcjZdsgmRS805sk7lgWn1' firebase.auth().currentUser || {}).uid */)
        .once('value', results => {
           results.forEach((snapshot) => {
               alert(snapshot.key)
           });
        })

Выше я также изменил код, чтобы использовать once вместо on. Это не будет иметь никакого значения для результатов запроса, но означает, что он прекращает прослушивание после получения результатов запроса.

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