'read only certain fields in firebase
If I have a database like
users: {
user1: {
name:'qwert',
id: 123,
num: 9999
},
user2: {
name:'zxcvb',
id: 456,
num: 8888
}
}
How can I read only name of all the users?
My expected result:
{
user1:{
name:'qwert'
},
user2:{
name:'zxcvb'
}
}
If I use this in JavaScript:
ref('users').once('value').then((snap)=>{console.log(snap.val())})
I get all the users with that all their data (but I only want name of each)
What changes should I make in my query to get the expected result?
Any suggestions would be highly appreciated and really helpful. I tried searching through the docs but didn't get what I was trying to look for.
My ultimate aim is to cut down the costs of reading unnecessary data.
Solution 1:[1]
To retrieve only the names of the users, then try the following:
firebase.database().ref().child("users").on("value", function (snapshot) {
snapshot.forEach(function(childSnapshot) {
var name=childSnapshot.val().name;
});
});
Here the snapshot is users, then you iterate inside user1 and user2 to be able to access the names of these users and retrieve them.
Solution 2:[2]
I guess I'm late but after some extensive research, there is a way in which we can fetch specific fields from firestore. We can use the select keyword, you're query would be somthing like (I'm using a collection for a generalized approach):
const result = await firebase.database().collection('users').select('name').get();
Where we can access the result.docs to further retrieved the returned filtered result. Thanks!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Peter Haddad |
| Solution 2 |
