Почему вывод дублируется? - PullRequest
       4

Почему вывод дублируется?

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

Выборка данных из базы данных firebase и мой вывод на симулятор дублируются.Я знаю, почему данные помещаются 2 раза в «элементы».Как я могу решить эту проблему и отправить элементы из каждого дочернего элемента в addData только один раз?

Мой код:

      constructor(props) {
        super(props);
        this.state = {
            arrData:[]
        };
    }

    componentDidMount = () => {
      var self = this;
       var items = [];
       database.ref("eventAttenders/2188058178082419").orderByKey().once("value")
         .then(function(snapshot) {
           snapshot.forEach(function(childSnapshot) {
             var key = childSnapshot.key;
             const key = childSnapshot.key;
             database.ref(`users/${key}`).once("value")
               .then(function(snapshot) {
                 snapshot.forEach(function(childSnapshot) {
                   var data = snapshot.val();
                   items.push({
                     name: data.name,
                     phone: data.phone,
                   });
               });

             });

         });

       });
       self.setState({arrData: items})
 }

Скриншот базы данных:

enter image description here

Скриншот симулятора:

enter image description here

1 Ответ

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

Поскольку вы добавляете метод push в snapshot.forEach(function(childSnapshot) {, это не обязательно, попробуйте удалить его.

componentDidMount = () => {
      var self = this;
       var items = [];
       database.ref("eventAttenders/2188058178082419").orderByKey().once("value")
         .then(function(snapshot) {
           snapshot.forEach(function(childSnapshot) {
             var key = childSnapshot.key;
             const key = childSnapshot.key;
             database.ref(`users/${key}`).once("value")
               .then(function(snapshot) {
                   var data = snapshot.val();
                   items.push({
                     name: data.name,
                     phone: data.phone,
                   });
             });

         });

       });
       self.setState({arrData: items})
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...