Я внедрил правило UID в firebase, где только UID может редактировать свои данные, но Read - для всех.
Итак, схема БД Firebase содержит UID в качестве ключа в узле «users» и «user_location». Я получаю информацию о местоположении, используя библиотеку javascript firebase geofire, и она не идентифицирует геолокацию и не возвращает информацию о пользователе.
т.е. key_entered не запускается, когда я использую UID в качестве ключа как в узле user, так и в user_location. однако key_entered запускается, когда я использую любую нажимную клавишу в узле «user» и «user_location». Я вижу разницу между UID и нажимной кнопкой. UID не имеет символа «-». Например: UID LX80290SLASKSAHSAN
push-идентификатор - -KSSD1212JSAD
Я изменил UID как ключ на любой ключ PUSH, и он работает.
var ref = firebase.database().ref().child("user_Location");
alert("ref"+ref);
ref.on("value", function(snapshot) {
snapshot.forEach(function(child) {
var childData = child.val();
alert(childData);
});
}, function (error) {
console.log("Error: " + error.code);
});
var geoFire = new GeoFire(ref);
alert("geofire"+geoFire);
var geoQuery = geoFire.query({
center: [51.425387, -0.92673],
radius: 1.80 });
alert("after geofire");
geoQuery.on("key_entered", function(key, location, distance) {
ref = firebase.database().ref().child("user").child(key);
ref.on("value", function(snapshot) {
snapshot.forEach(function(child) {
var childData = child.val();
alert(childData);
});
моя структура логической схемы выглядит следующим образом
user
UID
firstname
last name
user_location
UID
g : "990",
1 :52.11212
0 : -0.9898
Я хочу, чтобы firebase geofire идентифицировал узел «user_location» для соответствующей геолокации, которую я передаю, а затем получил UID и совпадает с UID в узле «user», а затем получил сведения о пользователе.