如何使用Javascript从Firebase中具有相同名称的所有子元素中获取数据?
我对firebase比较陌生,我想从所有同名的孩子(特别是“user,lat,lng”)那里获取数据,并将其放在地图上的位置。我还想知道是否有一种方法可以在添加另一个表时立即检索数据。 以下是JSON:如何使用Javascript从Firebase中具有相同名称的所有子元素中获取数据?,javascript,node.js,firebase,firebase-realtime-database,Javascript,Node.js,Firebase,Firebase Realtime Database,我对firebase比较陌生,我想从所有同名的孩子(特别是“user,lat,lng”)那里获取数据,并将其放在地图上的位置。我还想知道是否有一种方法可以在添加另一个表时立即检索数据。 以下是JSON: { "heartbeat" : { "-LjiK_rXySmlqlOFdQos" : { "-LjiK_s6zEovrd_yu8nA" : { "date" : "Jul-14-2019", "lat" : 14.6668004,
{
"heartbeat" : {
"-LjiK_rXySmlqlOFdQos" : {
"-LjiK_s6zEovrd_yu8nA" : {
"date" : "Jul-14-2019",
"lat" : 14.6668004,
"lng" : 121.1028933,
"time" : "10:36:06",
"user" : "Test User"
},
"-LjiOGsotaiAGzUpW8L7" : {
"date" : "Jul-14-2019",
"lat" : 14.6668004,
"lng" : 121.1028933,
"time" : "10:52:12",
"user" : "Test User"
},
"-LjiRSK0yM7cbJL1w3lI" : {
"date" : "Jul-14-2019",
"lat" : 14.6668004,
"lng" : 121.1028933,
"time" : "11:06:06",
"user" : "Test User"
},
"-LjiUtQoYJc2_CC4McIp" : {
"date" : "Jul-14-2019",
"lat" : 14.6652018,
"lng" : 121.1060547,
"time" : "11:21:07",
"user" : "Test User"
}
我正在使用javascript,并尝试将其连接到firebase,但我只能访问根目录,无法真正实现我想要的目标
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<div id="map"></div>
<div>
<span>Online users: </span><span id="users">0</span>
</div>
<!-- jQuery CDN -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Firebase -->
<script src="https://www.gstatic.com/firebasejs/4.12.1/firebase.js"></script>
<script>
var config = {
apiKey: "HISNCIHSDNCHINVS",
authDomain: "HISNCIHSDNCHINVS",
databaseURL: "HISNCIHSDNCHINVS",
projectId: "HISNCIHSDNCHINVS",
storageBucket: "HISNCIHSDNCHINVS",
messagingSenderId: "HISNCIHSDNCHINVS",
};
firebase.initializeApp(config);
</script>
<script>
var users_count = 0;
// markers array to store all the markers
var markers = [];
var map;
function initMap() { // google map
map = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center: new google.maps.LatLng(14.5838, 121.0597),
mapTypeId: 'terrain'
});
}
function AddUser(data) {
var icon = { // user icon
/* path: '',*/
scale: 1,
fillColor: "#000",
fillOpacity: 1,
strokeWeight: 1,
anchor: new google.maps.Point(0, 5),
};
var coordinates = { lat: data.val().lat, lng: data.val().lng };
var marker = new google.maps.Marker({
position: coordinates,
icon: icon,
map: map
});
/* --- On click info ---*/
var infowindow = new google.maps.InfoWindow({
content: 'Name: ' + data.val().user + '<br>Latitude: ' + data.val().lat +
'<br>Longitude: ' + data.val().lng
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
markers[data.key] = marker;
document.getElementById("users").innerHTML = users_count;
}
// I want to connect to all my child. Idk what to do.
var users_Ref = firebase.database().ref('/heartbeat');
users_Ref.on('child_added', function (data) {
users_count++;
AddUser(data);
});
users_Ref.on('child_changed', function (data) {
markers[data.key].setMap(null);
AddUser(data);
});
users_Ref.on('child_removed', function (data) {
markers[data.key].setMap(null);
users_count--;
document.getElementById("users").innerHTML = users_count;
});
</script>
https://maps.googleapis.com/maps/api/js?key=INSERT-API-KEY&callback=initMap">
</script>
</body>
在线用户:0
变量配置={
阿皮奇:“HISNICHSDNCHINVS”,
authDomain:“HISNICHSDNCHINVS”,
数据库URL:“HISNICHSDNCHINVS”,
projectId:“Hisnichsdnchinvs”,
storageBucket:“HISNICHSDNCHINVS”,
messagingSenderId:“HISNICHSDNCHINVS”,
};
firebase.initializeApp(配置);
var用户数=0;
//标记数组以存储所有标记
var标记=[];
var映射;
函数initMap(){//google map
map=new google.maps.map(document.getElementById('map'){
缩放:16,
中心:新google.maps.LatLng(14.5838121.0597),
mapTypeId:'地形'
});
}
函数AddUser(数据){
var icon={//用户图标
/*路径:“”*/
比例:1,
fillColor:#000“,
不透明度:1,
冲程重量:1,
主播:新google.maps.Point(0,5),
};
var坐标={lat:data.val().lat,lng:data.val().lng};
var marker=new google.maps.marker({
位置:坐标,
图标:图标,
地图:地图
});
/*---点击信息---*/
var infowindow=new google.maps.infowindow({
内容:“名称:”+data.val().user+”
纬度:“+data.val().lat”+
“
经度:”+data.val().lng
});
google.maps.event.addListener(标记'click',函数(){
信息窗口。打开(地图、标记);
});
markers[data.key]=标记器;
document.getElementById(“用户”).innerHTML=users\u count;
}
//我想连接到我所有的孩子。我不知道该怎么办。
var users_Ref=firebase.database().Ref('/heartbeat');
用户参考('child\u added',函数(数据){
用户数++;
添加用户(数据);
});
用户参考('child\u changed',函数(数据){
标记[data.key].setMap(null);
添加用户(数据);
});
“删除子项”功能(数据)上的用户参考{
标记[data.key].setMap(null);
用户数--;
document.getElementById(“用户”).innerHTML=users\u count;
});
https://maps.googleapis.com/maps/api/js?key=INSERT-API-KEY&callback=initMap“>
输出应该能够在基于我的firebase的所有位置上放置标记。非常感谢您的支持!请参阅此主题:。请参阅此主题:。