이 섹션에서는 제약 조건을 사용하여 데이터를 검색하는 방법에 대해 설명합니다.
- 이 섹션에서는 Bubble에서 검색이 작동하는 방식을 자세히 살펴봅니다.
- 데이터베이스에 데이터를 추가하고 업데이트했으면, 이제 해당 데이터를 검색하고 앱의 화면에 표시해야 합니다.
(1) 데이터 찾기
데이터베이스에서 일부 데이터를 찾아야 할 때마다 Do a search for data source를 사용하여 검색을 수행할 수 있습니다.
- 이를 통해 특정 제약 조건이 있는 데이터베이스에 대한 동적 쿼리를 설정할 수 있으며 Bubble은 제약 조건과 일치하는 해당 데이터 유형의 모든 항목을 반환합니다.
- 한 번에 하나의 데이터 유형(Data type)만 검색할 수 있습니다.
1. Do a search for 사용하기
: 이름이 John인 모든 사용자를 검색한다고 가정해 보겠습니다.
- 아래 예와 같이 Do a search for 기능을 설정할 수 있습니다 .
- Do a search for와 같은 데이터 소스는 동적 표현식 중 하나입니다.
표현식 작업 방법에 대한 자세한 내용은 해당 주제에 대한 글을 확인하십시오.
Bubble Dynamic Expressions (중급) : 동적 표현식, 버블의 핵심 표현식 알아보기, 특징 및 설정 방법 > 바로가기
- 먼저 콘텐츠 Type을 user로 설정하고 데이터 소스 드롭다운에서 다음 항목을 검색합니다.
- 그런 다음 이름이 John인 사용자만 반환하도록 Bubble에 지시하는 제약 조건을 설정합니다.
- 결과는 한 가지만 포함하더라도 항상 List가 반환됩니다.
- 이 예시에서는 John이라는 사용자를 검색합니다.
- 이것이 데이터베이스 쿼리가 작동하는 기본 방식입니다.
Bubble에게 어떤 종류의 데이터를 검색할지 알려준 다음 반환된 목록의 각 항목이 일치해야 하는 하나 이상의 제약 조건을 제공합니다.
: 위와 같은 절차를 사용하여 모든 종류의 시나리오에서 데이터를 찾을 수 있습니다.
- 결과를 화면에 표시할 때
- 워크플로의 일부로 데이터 검색할 때 (예시: 하나 이상의 항목을 변경하려는 경우)
- 조건식의 일부일 때
2. 동적값으로 검색하기
위의 예에서 정적(static) 값을 제약조건으로 사용했습니다. John이라는 이름입니다.
이것을 동적(dynamic) 값으로 설정할 수도 있습니다.
- 예를 들어 john이라는 이름 대신 Input 필드에 값(여기에서는 이름)을 입력하도록 변경할 수 있습니다.
- 이렇게 하면 사용자가 이름을 입력하고 데이터베이스에서 일치하는 이름을 검색할 수 있습니다.
- 이 예시에서는 name으로 Input search라는 Input필드에서 동적(Dynamic) 값을 검색합니다. 해당 값을 검색으로 참조하여 사용자가 검색할 항목을 지정할 수 있습니다.
- Do a search for data source로 수행한 검색은 실시간으로 데이터베이스와 동기화됩니다.
- 즉, 데이터베이스에서 발생하는 모든 변경 사항은 다른 사용자가 변경한 경우에도 앱에서 즉시 볼 수 있습니다.
(2) 결과 정렬
경우에 따라 알파벳순으로 사용자를 표시하거나 우선순위 또는 기한별로 작업을 표시하는 등 특정 방식으로 결과를 정렬해야 할 수 있습니다.
: 레코드를 List로 표시하거나 특정 레코드를 찾는 데 사용할 수 있습니다.
- 예를 들어, 데이터베이스에서 생성된 마지막 사용자를 로드하려는 경우 생성 날짜별로 목록을 정렬하고 정렬 순서에 따라 첫 번째 항목 또는 마지막 항목 연산자로 최신 사용자를 격리할 수 있습니다.
- 검색을 수행할 때 정렬 순서를 설정할 수 있습니다.
- 이예시에서는 이름(Name)으로 사용자를 정렬하고 있습니다.
- 경우에 따라 검색에서 로드되지 않은 목록을 참조하거나 어떤 연산식 다음에 정렬을 적용해야 하는 경우가 있습니다.
- 이 경우 :sorted 연산자를 사용할 수 있습니다.
- 아래 예시에서는 다른 반복 그룹을 데이터 원본으로 사용한 다음 해당 목록에 정렬을 적용합니다.
(3) List와 단일 항목의 차이점
Bubble에는 데이터베이스 레코드를 단일 항목 또는 List로 처리하는 두 가지 방법이 있습니다. 둘은 다르게 취급되기 때문에 이 구분을 이해하는 것이 중요합니다.
예를 들어 컨테이너 요소에 데이터를 로드할 때 그룹(Group element)은 단일 항목을 예상하고 반복 그룹(RepeatingGroup element)은 List(목록)을 예상합니다.
- 검색을 수행할 때마다, 결과가 한 가지만 반환하더라도 예상치는 항상 List(목록)이 됩니다.
- 즉, 결과 값이 1개인 List(목록)이지만 여전히 List(목록)입니다.
- 그러므로 결과 값이 항상 List로 나오는 것으로 간주하여야 합니다.
1. List에서 하나의 값을 불러오게 설정 시
Do a search for를 사용하여 List를 반환하도록 설정을 할 때, 만약에 하나의 값을 반환하는 예상을 하는 element 및 표현식은 이슈 트래커에서 오류를 감지하여 표시해 줍니다. (빨간색 글씨로)
- 이와 같은 경우 List로 되어있는 레코드 중 하나를 로드하도록 Bubble에 지시해야 합니다.
- 오류가 있는 표현식에 다른 연산자를 추가하여 위와 같은 작업을 수행해야 오류가 없어지고 값이 제대로 나올 수 있습니다.
1) First item:
- List(목록)의 첫 번째 항목을 반환합니다. List(목록)이 정렬되는 방식에 따라 항목이 달라집니다. 기본 정렬은 생성 날짜순입니다.
2) Last item:
- List(목록)의 마지막 항목을 반환합니다. List(목록)이 정렬되는 방식에 따라 항목이 달라집니다. 기본 정렬은 생성 날짜순입니다.
3) Random item:
- List(목록)에서 임의 항목을 반환합니다.
4) item#:
- List(목록)의 색인 번호(#다음 번호 적기)로 지정된 단일 항목을 반환합니다. 이 연산자를 사용하려면 item#5와 같이 숫자로 정의해야 합니다.
: 검색 제약 조건을 First item: 연산자와 결합하면 찾고 있던 정확한 항목에 도달할 수 있습니다.
- 예를 들어 사용자를 검색하고 이메일 필드를 제약 조건으로 사용할 수 있습니다.
- 이메일은 고유하므로 기존 사용자의 이메일 주소를 제공하여 올바른 레코드를 찾을 수 있습니다. 그런 다음 첫 번째 항목(First item:)을 결과 목록에 적용하면 목록이 하나의 항목으로 바뀝니다.
2. 단일 레코드를 List(목록)으로 전환
때로는 다른 방법으로 이동하여 해당 목록에 여전히 하나의 레코드만 포함되어 있는 경우에도 단일 항목을 List(목록)으로 전환해야 합니다.
- 이렇게 하려면 Converted to list(변환 목록 연산자)를 사용합니다.
- 이 예시에서는 그룹 user라는 그룹에 로드된 사용자를 가져와 list(목록)으로 변환합니다.
- 목록에는 여전히 하나의 레코드만 포함되지만 Bubble은 이를 마지막으로 처리합니다.
- 이 예시에서는 단일 항목이 List가 되었으므로 반복 그룹에 대해 유효한 데이터 소스가 됩니다.
(4) 기타 데이터 소스
Do a search for로 데이터베이스에서 데이터를 검색하는 것은 데이터를 찾는 한 가지 방법입니다.
다음과 같이 여러 가지 방식으로 데이터를 검색할 수 있습니다.
Data source | 설명 | 반환 값 |
Do a search for | 제약 조건을 사용하여 데이터베이스를 검색합니다. | List(목록) |
Current user | 현재 앱을 사용 중인 사용자 | 단일 항목 |
Current page thing | 페이지로 이동 작업 을 사용하여 현재 페이지에 로드된 데이터베이스 레코드입니다 . | 단일 항목 |
Get data from page URL | 고유 ID가 포함된 URL 매개변수에서 항목을 가져옵니다. | 단일 항목 |
Things's X | 현재 사용자의 회사와 같이 다른 항목에 저장된 필드에서 항목 가져오기 | 필드에 따라 List(목록) 또는 단일 항목 |