извлекать данные из Firebase без получения ключа UID в React Native - PullRequest
0 голосов
/ 14 апреля 2020

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

enter image description here

  useEffect(() => {
    var recentPostsRef = firebase.database().ref('/users');
    recentPostsRef.once('value').then((snapshot) => {
      // snapshot.val() is the dictionary with all your keys/values from the '/store' path
      console.log(snapshot.val());
    });
  }, []);

Могу ли я вывести эти данные следующим образом?

    {
      avatar: 'pin-1.png',
      firstname: 'Mahir',
      lastname: 'Asrani',
      latitude: 28.660918,
      longitude: 77.274468,
    },
    {
      avatar: 'pin-1.png',
      firstname: 'name',
      lastname: 'name',
      latitude: 00.00066,
      longitude: 00.275550,
    },

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Если вам нужен массив значений, вы можете использовать оператор forEach, чтобы извлечь все значения и поместить их в массив:

recentPostsRef.once('value').then((snapshot) => {
  let values = [];
  snapshot.forEach((child) => {
    values.push(child.val());
  });
  console.log(values);
});

Два примечания:

  • Вы все еще читаете здесь ключи из базы данных, но больше не отображаете их. Если это то, что вы хотите, это здорово, конечно. Просто хочу убедиться, что вы все еще читаете ключи из базы данных клиентом.

  • Очень часто для приложения требуется ключ позже, например, чтобы определить специфику c набор значений или для обновления указанного c узла в базе данных. Возможно, вам придется вернуться к этому коду позже и вернуться к нему, чтобы также сохранить ключи. Простой способ сохранить ключи и значения, но хранить их отдельно:

    recentPostsRef.once('value').then((snapshot) => {
      let keys = [],
          values = [];
      snapshot.forEach((child) => {
        key.push(child.key);
        values.push(child.val());
      });
      console.log(keys, values);
      // or: setState({ keys: keys, values: values });
    });
    
1 голос
/ 14 апреля 2020

Вы можете выполнить итерацию, используя forEach, чтобы получить все данные в users:

  useEffect(() => {
    var recentPostsRef = firebase.database().ref('/users');
    recentPostsRef.once('value').then((snapshot) => {
      snapshot.forEach((childSnap) => {
      console.log(childSnap.val());
     });
    });
  }, []);

Это позволит получить все данные в ids, но вы все равно сможете получить доступ к идентификатору, если вы до let uid = childSnap.key

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