Выбор указанного c поля (дочернего поля?) Из firebase в React Native - PullRequest
0 голосов
/ 13 июля 2020

Вот моя база данных:

"Locations" : {
   "location01" : {
     "image" : 
     "https://www.senecacollege.ca/content/dam/projects/seneca/homepage-assets/homepage_intl.jpg",
     "instructorName" : " OSMAN H.",
     "place" : "Seneca, Scarborough",
     "timing" : "TBA"
  },
  "location02" : {
     "image" : "https://media-exp1.licdn.com/dms/image/C561BAQHrVTRjljcYnw/company-background_10000/0?e=2159024400&v=beta&t=fp0LWqyEnnXvxjzzdfuCHhX2jflJyhAkS0lMLXsPFw0",
     "instructorName" : "AIYAZ NOOR",
     "place" : "UTSC, Scarborough",
     "timing" : "4 PM - 6 PM"
  }
},

Я знаю, что если я получу такие данные, то я могу выбрать / отфильтровать нужное поле c.

let locationsRef = db.ref('/Locations');

  locationsRef.once('value', snapshot => {
      let data = snapshot.val()
      let locationsList = Object.values(data)
      console.log(locationsList);
  })

Это, к сожалению, предоставит все данные в виде массива и отобразит каждый объект. Если бы в ветке / location было много записей, это заняло бы место и, на мой взгляд, это не лучшая практика. Есть ли способ выбрать ТОЛЬКО поле "место". Ключи «location01» и «location02» могут быть любыми. Итак, я не могу сделать что-то вроде (location / location01), тогда это приведет меня в конкретную ветку c. Я хочу получить поле «место» из всех ветвей.

Я много исследовал, и мне не повезло. Любые идеи / помощь приветствуются! Заранее спасибо

1 Ответ

0 голосов
/ 13 июля 2020

Я думаю, что вы ищете функцию .map в JavaScript.

Вы можете сопоставить свой объект местоположения следующим образом:

const locationsRef = db.ref('/Locations');

locationsRef.once('value', snapshot => {
  let data = snapshot.val()
  let locationsList = Object.values(data)
  locationsList.map((location, index) => {
    console.log(location.place);
    // here you can do whatever you want with every single location object
    // for example return a View that displays only the place
    return <View><Text>{location.place}</Text></View>
  });
});

Вы можете прочитать больше о функции .map в документах MDN здесь .

PS Я изменил ваше использование let на const в случае, если ваши данные БД являются константой, которую вы не меняете в этом конкретном обзоре.

...