如何查询两个不同的firebase地理查询?

时间:2016-08-30 17:09:06

标签: angularjs firebase firebase-realtime-database geofire

对于我当前的应用程序,我根据用户的当前位置和用户的家庭地址获取位置列表,因此两者不同。我将它们保存到两个不同的geofire树中,并希望在单独的时间查询它们,但最后,我想将它们组合在一起。所以我的数据可能看起来像这样。我的问题是如何在数据加载完成后合并这两个数据,我担心如果我在ready子句之外执行我的操作,我的所有数据都不会准备好,但如果我将操作放在任何一个中ready子句,另一个可能没准备好。 谢谢! -currentLocationGeo  -user1   -lat:12.345   -lng:53.5435 -addressLocationGeo  -user1   -lat:124.544   -lng:34.54

                        currentLocationGeo.on("key_entered", function (key, location, distance) {


                        });

                        addressLocationGeo.on("key_entered", function (key, location, distance) {


                        });

                        currentLocationGeo.on("ready", function () {

                        });

                        addressLocationGeo.on("ready", function () {
                          //do something to combine the two geo together and make sure everything is loaded.
                     finalGeo.push(eachLocation);

                        });

//为finalgeo做点什么,但我不确定finalGeo是否真的准备就绪,而不是在地理位置准备就绪。

1 个答案:

答案 0 :(得分:1)

你需要在这里使用promises。 Angular就像$q service一样。

<?xml version="1.0" encoding="UTF-8"?> <entity1> <businessElements> <key>requestID</key> <type>???</type> <value>TV00001001</value> </businessElements> <entity2> <businessElements> <key>effectiveDt</key> <type>???</type> <value>2001-12-31T12:00:00</value> </businessElements> <businessElements> <key>companyCd</key> <type>???</type> <value>companyCd</value> </businessElements> <entity3> <vo1> <businessElements> <key>att1</key> <type>???</type> <value>true</value> </businessElements> <businessElements> <key>att2</key> <type>???</type> <value>vehicleId</value> </businessElements> <businessElements> <key>att3</key> <type>???</type> <value>true</value> </businessElements> </vo1> </entity3> </entity2> </entity1> 可以满足您的需求,等待完成所有承诺。但是如果你没有承诺,你可以创建2个延迟对象并在准备好的回调中解决它们,并在$ q.all()之后等待。

$q.all