최근에 내 응용 프로그램을 구문 분석에서 Firebase로 전환하기 시작했습니다. 지금까지 모든 것이 훌륭해졌지만 Parse 's whereContainedIn (String key, Collection values)에 Firebase와 동일한 메소드를 찾을 수 없었습니다.Firebase 데이터베이스 - ID 목록 별 쿼리
이것은 ID 배열을 전달할 수있는 매우 유용한 방법이었으며 해당 ID와 일치하는 모든 행을 반환했습니다. 지금까지 Firebase를 사용하여 데이터베이스의 모든 행을 반환 한 다음 해당 행의 ID가 내 ID 배열에 포함되어 있는지 확인하기 위해 루핑했습니다. 다른 방법은 각 id를 개별적으로 쿼리하는 것이고, 이는 Firebase의 비동기 동작에는 적합하지 않습니다. 내 표는 수십만 개의 레코드를 포함하기 때문에
이List<String> userIds = new ArrayList<>();
userIds.add("2");
userIds.add("32");
userIds.add("12545");
userIds.add("187");
DatabaseReference firebaseRef = FirebaseDatabase.getInstance().getReference();
Query queryRef = firebaseRef.child("videos");
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<Video> usersVideos = new ArrayList<Video>();
for (DataSnapshot videoSnapshot : dataSnapshot.getChildren()) {
Video video = videoSnapshot.getValue(Video.class);
if (userIds.contains(video.userId)) {
usersVideos.add(video);
}
}
// usersVideos is now populated with the videos for the users
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "CANCELLED");
}
});
이러한 방법 중 어느 쪽이 합리적인 것 : 이것은 내가 첫 번째 방법 지금 뭐하는 거지입니다.
도움이 될 것입니다.
중포 기지가 (1,2,3)'동등한 'WHERE ID를 가지고 있지 않습니다
그래서 참고로 더 같이 표시됩니다. Firebase가 파이프 라인 요청을하기 때문에 필요하지 않은 적당한 크기의 목록. http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 –