有点难以解释,但我会试一试。
基本上我有两个表,一个商店位置,另一个商店用户。流程如下: - 根据查询获取位置(已完成) - 获取与查询中的位置匹配的用户
目前,我拥有从位置到用户的所有相应密钥。获取所需位置后获取用户详细信息的正确和最快方法是什么。
我没有询问如何根据位置获取用户,因为我已经为该位置引用了用户,我只是想知道我应该如何执行获取用户详细信息。 我应该为用户创建第二个监听器以获取其详细信息吗?
PS我是firebase的新成员,非常感谢所有帮助!
答案 0 :(得分:1)
是的,你是对的,这是你可以做到的一种方式:查询可能会像这样
final DatabaseReference root = FirebaseDatabase.getInstance().getReference();
Query locationQuery = root.child("location").orderByChild("place").equalTo("london");
locationQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// I am assuming you have your own custom location class that you push to firebase
Location location = dataSnapshot.getValue(Location.class);
// make the second query inside the on Child Added method
Query userQuery = root.child("users").orderByChild("location").equalTo(location);
userQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// again I am assuming you have your own custom user class
User user = dataSnapshot.getValue(User.class);
}
}
}
我刚从子事件侦听器中删除了所有其他方法。 因此,您在位置表上按位置进行第一次查询。然后,对于onChildAdded方法中返回的每个位置,您对users表进行另一个查询,并根据返回的位置进行查询。