从Firebase获取数据而无需在React Native中获取uid密钥

时间:2020-04-14 12:41:26

标签: reactjs firebase react-native firebase-realtime-database

我想从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 个答案:

答案 0 :(得分:1)

您可以使用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

,您仍然可以访问ID。

答案 1 :(得分:1)

如果要使用值数组,可以使用forEach运算符提取所有值并将它们放在数组中:

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

两个注意事项:

  • 您仍在这里从数据库中读取它们的密钥,只是不再显示它们。如果那是您想要的,那当然很好。只是要确保您知道客户端仍然从数据库中读取密钥。

  • 对于应用程序来说,以后需要密钥是很常见的,例如,标识一组特定的值或更新数据库中的特定节点。您可能稍后必须返回此代码并重新访问它以保留密钥。保留键和值,但分别保存的简单方法是:

    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 });
    });
    
相关问题