我在firebase中实现了UID规则,其中只有UID可以编辑其详细信息,但Read适用于所有人。 因此,Firebase数据库架构在“用户”和“用户位置”节点中都包含UID作为键。我正在使用Firebase geofire javascript库检索位置详细信息,但未识别地理位置,也未检索用户详细信息。
当我在“用户”和“用户位置”节点中都将UID用作键时,ie key_entered不会触发。但是,当我在“用户”和“用户位置”节点中使用任何按键时,都会触发key_entered。我可以看到UID和按键之间的区别。 UID没有“-”符号。例如:UID为LX80290SLASKSAHSAN 推送ID为-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并与“ user”节点中的UID匹配,然后检索用户详细信息。