Android 앱에서 Firebase 데이터베이스의 값 배열을 비교하는 방법은 무엇입니까?

사무엘 로버트

내 응용 프로그램에 대한 아래 JSON 구조가 있습니다.

root
 |
 +-- groups
 |      |
 |      +-- $gid
 |            |
 |            +-- uids : [$uid1, $uid2,....,$uidN]
 |           
 |      
 +-- users
       |
       +-- $uid
             |
             +-- name: "<name>",
               status: "<status>",
               avatar: "<url>"

지정된 uid와 일치하는 gid를 찾는 방법은 무엇입니까?

내가 시도한 방법은 모든 uid를 밑줄과 함께 연결했습니다.

String mGroupId = mGroupRef.push().getKey();
mGroupRef.child(mGroupId).setValue(new GroupModel(user1.getUid(), user2.getUid()));

class GroupModel {
    private static final String SEPARATOR = "_";
    private String uids;

    public GroupModel(String uid, String uid1) {
            uids = uid + SEPARATOR + uid1;
    }
}

분명히 이것은 좋은 일이 아닙니다.

왜냐하면 질문은 uid의 순서가 정의되지 않았기 때문에 gid를 찾기가 매우 어렵게 만듭니다.

어떤 개념이나 도움을 주시면 감사하겠습니다.

프랭크 반 푸 펠렌

Firebase 쿼리에는 orderBy / filter 절이 하나만 포함될 수 있습니다. 여러 기준을 검색하려면 기준 값을 단일 속성으로 결합 하거나 쿼리를 허용하는 데이터 모델을 결합하는 방법을 찾아야 합니다.

귀하의 시나리오에서 UID를 단일 문자열로 결합하는 것은 나에게 가장 직접적인 매핑으로 보입니다. UID를 알파벳순으로 (또는 항상 동일한 순서를 보장하는 방식으로) 정렬 한 다음 문자열을 연결하면됩니다.

실행 가능한 코드 스 니펫도 포함하는 Firebase에서 채팅 채널을 관리하는 가장 좋은 방법으로 이전에 이에 대해 작성했습니다 .

그룹이 구성원에 의해 정의 된 경우 (많은 채팅 시나리오에서와 같이) 이벤트가 연결된 UID를 방 키로 사용할 수 있습니다. 구성원이 많으면 해당 키가 Firebase에서 허용하는 것보다 길어질 수 있으므로이 경우 연결된 UID의 해시를 사용하는 것이 가장 좋습니다.

마지막으로 Firebase 데이터베이스에서 배열을 사용하는 것은 종종 코드 냄새입니다. 각 사용자는 한 번만 그룹의 구성원이 될 수 있습니다. 그러나 배열에는 동일한 UID가 여러 번 포함될 수 있습니다. contains()배열에 대한 호출을 수행 할 때 고유 한 구성원이있는 컬렉션 인 집합을 모방하는 경우가 많습니다. Firebase 데이터베이스에서 집합을 다음과 같이 모델링합니다.

members: {
  uid1: true,
  uid2: true,
  uid3: true
}

이 구조를 사용하면 각 UID가 한 번만 존재할 수 있으므로이를 보장하기 위해 코드가 필요하지 않습니다. true중포 기지 데이터베이스에 값이없는 키를 저장 할 수 없기 때문에 값은 단지 필요하다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Firebase 실시간 데이터베이스의 하위 값과 값을 비교하는 방법은 무엇입니까?

분류에서Dev

Firebase 데이터베이스에서 특정 값을 얻는 방법은 무엇입니까?

분류에서Dev

Java의 HashMap에서 Firebase 데이터베이스의 값을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Firebase 데이터베이스의 모든 하위 데이터에 값을 설정하는 방법은 무엇입니까?

분류에서Dev

값이 배열 인 데이터베이스에 HashMap을 저장하는 방법은 무엇입니까?

분류에서Dev

사전의 값을 데이터베이스의 레코드와 비교하는 방법은 무엇입니까?

분류에서Dev

Firebase 데이터베이스의 모든 하위 항목에서 특정 값을 가져온 다음 추가하는 방법은 무엇입니까?

분류에서Dev

Firebase Android에서 데이터 배열 목록을 검색하는 방법은 무엇입니까?

분류에서Dev

Firebase 데이터베이스에서 Android의 ListView에서 사용자 이름 목록을 가져 오는 방법은 무엇입니까?

분류에서Dev

Android의 Firebase 실시간 데이터베이스에서 가치를 얻는 방법은 무엇입니까?

분류에서Dev

Android의 배열에서 값을 얻는 방법은 무엇입니까?

분류에서Dev

C #의 데이터베이스에서 KeyValuePair의 값을 검색하는 방법은 무엇입니까?

분류에서Dev

Android에서 Firebase 데이터베이스에 특정 값이있는 특정 키를 추가하는 방법은 무엇입니까?

분류에서Dev

Android에서 Firebase 데이터베이스에서 데이터를 추출하는 알림을 보내는 방법은 무엇입니까?

분류에서Dev

Firebase 데이터베이스 값을 각각의 페어링 된 UID에만 표시하는 방법은 무엇입니까?

분류에서Dev

python mysql에서 인덱스 값과 데이터베이스 값을 비교하는 방법은 무엇입니까?

분류에서Dev

SQL에 대한 데이터베이스 열의 특정 값을 바꾸는 방법은 무엇입니까?

분류에서Dev

Android에서 두 개의 확인란 값을 비교하는 방법은 무엇입니까?

분류에서Dev

C # Mysql 데이터베이스의 값을 레이블에 표시하는 방법은 무엇입니까?

분류에서Dev

bash 스크립트에서 배열 값을 비교하는 방법은 무엇입니까?

분류에서Dev

데이터베이스에 저장하기 전에 이전 값과 현재 값을 비교하는 방법은 무엇입니까?

분류에서Dev

Firebase 실시간 데이터베이스에서 기존 값을 업데이트하는 방법은 무엇입니까?

분류에서Dev

PHP의 데이터베이스에 2.00 형식의 값을 저장하는 방법은 무엇입니까?

분류에서Dev

django의 데이터베이스에 값을 저장하는 방법은 무엇입니까?

분류에서Dev

교리를 사용하여 Symfony2의 데이터베이스 테이블에서 값 목록을 얻는 방법은 무엇입니까?

분류에서Dev

선택 옵션을 데이터베이스 값과 비교하는 방법은 무엇입니까?

분류에서Dev

두 개의 텍스트 상자 값 (데이터)을 데이터베이스 (My SQL)의 단일 열에 추가하는 방법은 무엇입니까?

분류에서Dev

SQL Lite 데이터베이스에 문자열 값을 삽입하는 방법은 무엇입니까?

분류에서Dev

Firebase 실시간 데이터베이스에서 값을 올바르게 검색하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Firebase 실시간 데이터베이스의 하위 값과 값을 비교하는 방법은 무엇입니까?

  2. 2

    Firebase 데이터베이스에서 특정 값을 얻는 방법은 무엇입니까?

  3. 3

    Java의 HashMap에서 Firebase 데이터베이스의 값을 업데이트하는 방법은 무엇입니까?

  4. 4

    Firebase 데이터베이스의 모든 하위 데이터에 값을 설정하는 방법은 무엇입니까?

  5. 5

    값이 배열 인 데이터베이스에 HashMap을 저장하는 방법은 무엇입니까?

  6. 6

    사전의 값을 데이터베이스의 레코드와 비교하는 방법은 무엇입니까?

  7. 7

    Firebase 데이터베이스의 모든 하위 항목에서 특정 값을 가져온 다음 추가하는 방법은 무엇입니까?

  8. 8

    Firebase Android에서 데이터 배열 목록을 검색하는 방법은 무엇입니까?

  9. 9

    Firebase 데이터베이스에서 Android의 ListView에서 사용자 이름 목록을 가져 오는 방법은 무엇입니까?

  10. 10

    Android의 Firebase 실시간 데이터베이스에서 가치를 얻는 방법은 무엇입니까?

  11. 11

    Android의 배열에서 값을 얻는 방법은 무엇입니까?

  12. 12

    C #의 데이터베이스에서 KeyValuePair의 값을 검색하는 방법은 무엇입니까?

  13. 13

    Android에서 Firebase 데이터베이스에 특정 값이있는 특정 키를 추가하는 방법은 무엇입니까?

  14. 14

    Android에서 Firebase 데이터베이스에서 데이터를 추출하는 알림을 보내는 방법은 무엇입니까?

  15. 15

    Firebase 데이터베이스 값을 각각의 페어링 된 UID에만 표시하는 방법은 무엇입니까?

  16. 16

    python mysql에서 인덱스 값과 데이터베이스 값을 비교하는 방법은 무엇입니까?

  17. 17

    SQL에 대한 데이터베이스 열의 특정 값을 바꾸는 방법은 무엇입니까?

  18. 18

    Android에서 두 개의 확인란 값을 비교하는 방법은 무엇입니까?

  19. 19

    C # Mysql 데이터베이스의 값을 레이블에 표시하는 방법은 무엇입니까?

  20. 20

    bash 스크립트에서 배열 값을 비교하는 방법은 무엇입니까?

  21. 21

    데이터베이스에 저장하기 전에 이전 값과 현재 값을 비교하는 방법은 무엇입니까?

  22. 22

    Firebase 실시간 데이터베이스에서 기존 값을 업데이트하는 방법은 무엇입니까?

  23. 23

    PHP의 데이터베이스에 2.00 형식의 값을 저장하는 방법은 무엇입니까?

  24. 24

    django의 데이터베이스에 값을 저장하는 방법은 무엇입니까?

  25. 25

    교리를 사용하여 Symfony2의 데이터베이스 테이블에서 값 목록을 얻는 방법은 무엇입니까?

  26. 26

    선택 옵션을 데이터베이스 값과 비교하는 방법은 무엇입니까?

  27. 27

    두 개의 텍스트 상자 값 (데이터)을 데이터베이스 (My SQL)의 단일 열에 추가하는 방법은 무엇입니까?

  28. 28

    SQL Lite 데이터베이스에 문자열 값을 삽입하는 방법은 무엇입니까?

  29. 29

    Firebase 실시간 데이터베이스에서 값을 올바르게 검색하는 방법은 무엇입니까?

뜨겁다태그

보관