I want to push all values that satisfy a certain condition to an array then return this array. Here's my code
exports.getNearbyPosts = function (myLat, myLng){
var query = firebase.database().ref("posts/").orderByKey();
var listOfItems = [];
query.once("value")
.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key;
var childData = childSnapshot.val();
var dist = getDistanceBetweenCoord(childData.lat, childData.lng, myLat, myLng);
if(dist < 10239820938502){
listOfItems.push(childSnapshot);
}
});
});
return listOfItems;
}
However since forEach is asynchronous, and it seems like I cannot use a callback on forEach, the listOfItems I return would just be an empty array. I have also tried ".then", but it would only allow me to do more stuff inside ".then" and I would like to return this array as a variable to other parts of the code. How can I return the correct array after forEach has been executed?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…