Here is my Fireabse database structure. I want to retrieve data of 20170116
keys that is not a hard coded value. It's dynamic keys. I got some keys and values like :
This is my funtion :
function getData(prospectId) {
database.ref('users/'+prospectId).once('value').then(function(snapshot) {
var prospectId = snapshot.key ;
console.log("prospectId : "+ prospectId); // output is : prospectId : 1104812
snapshot.forEach(function(childSnapshot) {
var businessUrl = childSnapshot.key;
console.log("businessUrl : "+ businessUrl); // output is : businessUrl : http:\\www.abc
var dates = Object.keys(childSnapshot.val());
console.log("dates : "+ dates); //output is : dates : 20170116,20170117,20170119,20170121
var singleDate = dates[0];
console.log("singleDate : "+ singleDate); //output is : singleDate : 20170116
});
});
}
getData(1104812);
So how to get 20170116
date data or snapshot ?
Here is my Fireabse database structure. I want to retrieve data of 20170116
keys that is not a hard coded value. It's dynamic keys. I got some keys and values like :
This is my funtion :
function getData(prospectId) {
database.ref('users/'+prospectId).once('value').then(function(snapshot) {
var prospectId = snapshot.key ;
console.log("prospectId : "+ prospectId); // output is : prospectId : 1104812
snapshot.forEach(function(childSnapshot) {
var businessUrl = childSnapshot.key;
console.log("businessUrl : "+ businessUrl); // output is : businessUrl : http:\\www.abc.
var dates = Object.keys(childSnapshot.val());
console.log("dates : "+ dates); //output is : dates : 20170116,20170117,20170119,20170121
var singleDate = dates[0];
console.log("singleDate : "+ singleDate); //output is : singleDate : 20170116
});
});
}
getData(1104812);
So how to get 20170116
date data or snapshot ?
- Educated guess below. If that's not it (and for future questions) please replace the picture of JSON with the actual JSON as text, which you can easily get by clicking the Export JSON link in your Firebase Database console. Having the JSON as text makes it searchable, allows us to easily use it to test with your actual data and use it in our answer and in general is just a Good Thing to do. – Frank van Puffelen Commented Jan 28, 2017 at 18:32
1 Answer
Reset to default 5You're attaching a value listener to /users/1104812
. So the snapshot you get in your callback will contain the child nodes under that: 20170116
, 20170117
and 20170119
.
When you loop over the children (with snapshot.forEach(function(
) your childSnapshot
will bee each of those nodes in turn.
None of these nodes has a child clientUrl
or districtId
, those are one level deeper into the tree:
database.ref('users/'+prospectId).once('value').then(function(snapshot) {
var prospectId = snapshot.key ;
snapshot.forEach(function(snapshot1) {
console.log(snapshot1.key); // e.g. "http://..."
snapshot.forEach(function(snapshot2) {
console.log(childSnapshot.key); // e.g. "20170116"
childSnapshot.forEach(function(snapshot3) {
console.log(grandchildSnapshot.key); // e.g. "-Kb9...gkE"
console.log(grandchildSnapshot.val().districtId); // "pne"
});
});
});
});