Реагировать на родную базу данных и базу данных Firebase не отображает функцию - PullRequest
0 голосов
/ 26 августа 2018

Я давно работаю в разборе объектов, этот объект из Firebase, но я не могу разобрать, пожалуйста, помогите мне, как я могу это сделать?

{
   "user" : {
       "qweqwe1231" : {
           "-LKmfJ8X9FtL75-03yBf" : {
           "gonderilenkisi":"asdasdad",
           "gonderimzamani":"3123",
           "metin":"dqweqweqe",
           "okundumu":0
       },
       "-LKmgiBm8EB7LFDeOGbH" : {
           "gonderilenkisi":"asdasdad",
           "gonderimzamani":"3123",
           "metin":"dqweqweqe",
           "okundumu":0
       }
   }
}

Я получаю такие данные

firebase.database().ref().child('user').child('qweqwe1231').on('value', 
     (data)=>{
         console.log(data.val())

});

И я использую для отображения функции, но я получаю сообщение об ошибке «карта не является функцией»

firebase.database().ref().child('user').child('qweqwe1231').on('value', 
     (data)=>{
         data.val().map((item)=>{ console.log(item.gonderilenkisi)})

});

1 Ответ

0 голосов
/ 26 августа 2018

Эта ошибка мне кажется правильной.Если вы загрузите /user/qweqwe1231, вы получите этот JSON:

{
  "-LKmfJ8X9FtL75-03yBf" : {
    "gonderilenkisi" : "asdasdad",
    "gonderimzamani" : "3123",
    "metin" : "dqweqweqe",
    "okundumu" : 0
  }, 
  "-LKmgiBm8EB7LFDeOGbH" : {
    "gonderilenkisi" : "asdasdad",
    "gonderimzamani" : "3123",
    "metin" : "dqweqweqe",
    "okundumu" : 0
  }
}

Это не массив, поэтому в нем нет метода map().

Возможно, выищем перебирать субобъекты объекта.Поскольку метода map() не существует, вам необходимо:

  1. извлечь ключи с помощью Object.keys().
  2. , выполнить цикл по ключам с помощью Array.forEach() или Array.forEach().
  3. найдите подобъект для каждого ключа и сделайте свое дело на этом.

Итак, в коде:

firebase.database().ref().child('user').child('qweqwe1231').on('value', (snapshot)=>{
    let data = snapshot.val();
    let keys = Object.keys(data);
    keys.forEach((key) => { console.log(data[key]); });
});

В качестве альтернативы, вы можете зациклитьдети DataSnapshot, с которыми Firebase передает вас DataSnapshot.forEach().

Так в коде:

firebase.database().ref().child('user').child('qweqwe1231')
.on('value',  (snapshot)=>{
    snapshot.forEach((item) => { console.log(item.val().gonderilenkisi); })
});    
...