我有一个数组列表中的键列表。我想只从这些键中检索数据,但同时也是如此。
DatabaseReference mDBRef;
List<String> keys = new ArrayList<>();
我用循环尝试了这个,但是模型类中的结果重复了两次。
for (int i= 0;i<keys.size();i++)
{
String id = keys.get(i);
Log.d("Keys",id);
mDBRef = FirebaseDatabase.getInstance().getReference().child("Gyms").child(id);
mDBRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
dataSnapshot.getKey();
gyms = dataSnapshot.getValue(Gyms.class);
if (gyms != null)
{
Log.d("Names",gyms.getName());
Toast.makeText(NearMeActivity.this, ""+ gyms.getName(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
答案 0 :(得分:2)
Firebase实时数据库不支持根据值数组加载项目。您必须通过单独的呼叫加载每个项目。
虽然这可能使你的代码卷入其中,但它并不像大多数开发人员所想的那么慢。这是因为Firebase管理请求。有关详细说明,请参阅我的答案:http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786
答案 1 :(得分:0)
firebase实时数据库不支持多个匹配。您可以看到Firestore是NoSQL并提供一些灵活性。 请参阅Firestore:https://firebase.google.com/docs/firestore/
您必须使用自动搜索解决方案,例如Elastic Search。