我想从firebase数据库中获取所有数据,但我不希望显示UID密钥,我可以从此代码中获取数据,但它显示uid。如果可能的话,我只想显示所有数据
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,
},
答案 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
答案 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 });
});