Flutter
...
Data Objects
Flutter에서 Parse로 1대다 관계 구현 및 쿼리
16 분
플러터의 일대다 관계 소개 parse를 사용하면 데이터 객체를 저장하고 그들 간의 관계를 설정할 수 있습니다 이러한 동작을 모델링하기 위해, 다른 parseobject parseobject 의 값으로 사용될 수 있습니다 내부적으로 parse 프레임워크는 참조된 객체를 한 곳에 저장하여 일관성을 유지합니다 이는 복잡한 쿼리를 구축하고 실행할 때 추가적인 힘을 줄 수 있습니다 세 가지 주요 관계 유형이 있습니다 일대일 일대일 , 두 객체 간의 직접적인 관계를 설정하며 오직 그들만의 관계입니다; 일대다 일대다 , 하나의 객체가 여러 다른 객체와 관련될 수 있습니다; 다대다 다대다 , 여러 객체 간에 복잡한 관계를 생성할 수 있습니다 이 가이드에서는 일대다 일대다 관계가 어떻게 작동하는지 실용적인 앱 예제를 사용하여 자세히 설명합니다 parse에서 일대다 일대다 관계를 생성하는 두 가지 방법이 있습니다 첫 번째 방법은 포인터 포인터 를 사용하는 것입니다 자식 클래스 자식 클래스 , 이는 생성 및 쿼리 시간에서 가장 빠릅니다 두 번째 방법은 배열 배열 을 사용하는 것입니다 포인터 포인터 를 부모 클래스에서 사용하면 크기에 따라 쿼리 시간이 느려질 수 있습니다 이러한 성능 문제로 인해 우리는 포인터 예제만 사용할 것입니다 flutter 도서 등록 앱을 구현하고 parse 포인터 포인터 를 사용하여 관련 객체를 생성하고 쿼리할 것입니다 관계는 일대일 일대일 이 일반적이지 않으며, 우리는 가이드에서 다루지 않을 것입니다 예를 들어, 사용자 클래스와 다른 클래스 간의 관계는 민감한 사용자 데이터를 포함할 수 있습니다 보안상의 이유로 https //blog back4app com/parse server best practices/ ( 1 4 사용자가 다른 사람의 민감한 데이터에 접근하지 못하도록 하세요 ) 전제 조건 flutter 버전 2 2 x 이상 https //flutter dev/docs/get started/install android studio https //developer android com/studio 또는 vs code 설치 ( 플러그인 dart 및 flutter 포함) back4app에서 생성된 앱 참고 새 parse 앱 튜토리얼 을 따라 back4app에서 parse 앱을 만드는 방법을 배우세요 back4app에 연결된 flutter 앱 참고 flutter 프로젝트에 parse sdk 설치 을 따라 back4app에 연결된 flutter 프로젝트를 만드세요 android 또는 ios를 실행하는 장치(또는 가상 장치) 책 앱 이해하기 당신이 사용할 주요 객체 클래스는 책 책 클래스이며, 각 책 항목을 등록에 저장합니다 또한, 다음은 다른 세 개의 객체 클래스입니다 출판사 출판사 책 출판사 이름, 책 책 과의 일대다 관계; 장르 장르 책 장르, 책 책 ,과의 일대다 관계 이 예제에서는 책이 하나의 장르만 가질 수 있다고 가정합니다; 저자 저자 책 저자, 책 책 ,과의 다대다 관계, 책은 여러 저자를 가질 수 있고 저자도 여러 책을 가질 수 있습니다; 이 데이터 모델의 시각적 표현 각 객체 클래스 ( 출판사 출판사 , 장르 장르 )는 문자열 유형의 이름 이름 속성만 가지고 있으며 책 책 은 제목 제목 과 연도 연도 , 추가적인 관계 속성과는 별개입니다 이전 가이드에서는 parseobject parseobject 를 저장하고 읽는 방법을 이미 보았으므로, 이번 가이드에서는 장르 장르 와 출판사 출판사 객체를 저장하고 읽는 방법은 다루지 않겠습니다 책 앱에서 다음 화면을 찾을 수 있습니다 장르 등록 및 목록 출판사 등록 및 목록 책 등록 출판사 및 책 목록 책 세부정보 이 가이드의 주요 초점이 관계를 사용하여 flutter와 parse를 사용하는 것이기 때문에 flutter 애플리케이션 코드를 설명하지 않겠습니다 1 도서 앱 템플릿 만들기 먼저 도서 앱 프로젝트 템플릿을 실행해 보겠습니다 이전 가이드에서 flutter plugin for parse server 를 열어보세요 도서 flutter 앱 https //github com/templates back4app/flutter associations 리포지토리도 복제하여 프로젝트를 실행할 수 있습니다 main dart https //github com/templates back4app/flutter associations/blob/master/lib/main dart 파일을 복사하고 이전 가이드의 현재 코드를 교체하세요 참고 함수 debug debug 매개변수가 parse() initialize parse() initialize 에서 true true 로 설정되면, 콘솔에 parse api 호출을 표시할 수 있습니다 이 설정은 코드 디버깅에 도움이 될 수 있습니다 릴리스 버전에서는 디버그를 비활성화하는 것이 좋습니다 2단계 템플릿을 back4app 프로젝트에 연결하기 앱 대시보드에서 back4app 대시보드 >앱 설정 >보안 및 키 https //www back4app com/docs/parse dashboard/app settings back4app에서 프로젝트의 applicationid와 clientkey 값을 사용하여 main dart main dart 의 코드를 업데이트하세요 keyapplicationid = 앱 id keyclientkey = 클라이언트 키 프로젝트를 실행하면 앱이 이미지와 같이 로드됩니다 장르 추가 장르 추가 를 클릭하여 책 등록에 사용될 장르 장르 목록을 등록하고 확인하세요 클릭하여 퍼블리셔 추가 퍼블리셔 추가 를 등록하고 퍼블리셔 퍼블리셔 목록을 확인하세요 클릭하여 책 추가 책 추가 를 클릭하여 새로운 책 책 을 등록하세요 장르 장르 및 퍼블리셔 퍼블리셔 와의 관계를 사용하세요 클릭하여 퍼블리셔/책 목록 퍼블리셔/책 목록 을 클릭하여 퍼블리셔 퍼블리셔 및 책 책 목록을 확인하세요 3 책 객체와 그 관계 저장하기 이 기능은 back4app 데이터베이스에 관계와 함께 새로운 책을 생성합니다 dosavebook dosavebook 함수를 main dart main dart 파일에서 검색하고, future\<void> dosavebook() future\<void> dosavebook() 함수 안에 아래 코드를 삽입하세요 1 final book = parseobject('book') 2 set('title', controllertitle text trim()) 3 set('year', int parse(controlleryear text trim())) 4 //the objectid will be converted to a pointer on the save() method 5 set('genre', parseobject('genre') objectid = genre objectid) 6 //you can also convert to a pointer object before the saving using the topointer() method 7 set( 8 'publisher', 9 (parseobject('publisher') objectid = publisher objectid) 10 topointer()); 11 12 await book save(); 이 기능을 구축하려면 다음 단계를 따르세요 1\ parse book book 클래스를 다음 명령어로 새 인스턴스를 생성합니다 parseobject('book') parseobject('book') 2 set set 함수를 사용하여 이 객체의 필드를 설정합니다 2 1 title title 은 텍스트 컨트롤러에서 값을 받는 텍스트 속성입니다 2 2 genre genre 는 parseobject parseobject 를 정의하여 값을 받습니다 objectid objectid 는 선택한 genre genre ( parse는 저장 시 포인터로 변환됩니다 ) 2 3 publisher publisher 는 parseobject parseobject 를 정의하여 값을 받습니다 objectid objectid 는 선택한 publisher publisher ( parse에 대해 포인터로 저장하고 싶다고 지정할 수 있습니다 pointer pointer 를 사용하여 topointer() topointer() 메서드 ) 3 save save 함수를 호출하여 parseobject parseobject , 이는 효과적으로 객체를 back4app 대시보드의 데이터베이스에 등록합니다 앱을 실행하고 새로운 기능을 테스트하세요 버튼을 클릭하세요 책 추가 책 추가 책 정보를 입력하세요 앱은 저자(s)를 선택해야 하지만, 그에 대한 코드는 다음 가이드에서만 다룰 것입니다 클릭하세요 책 저장 책 저장 버튼 새 객체가 관계와 함께 데이터베이스에 저장되었는지 확인하려면 back4app 대시보드 back4app 대시보드 에 접근하고 book book 클래스를 접근하세요 대시보드를 사용하여 book 클래스를 접근하면 객체 포인터 값을 클릭할 수 있으며 참조된 객체로 리디렉션됩니다 이는 무해한 기능처럼 보일 수 있지만, 수동으로 검색하는 것보다 디버깅 및 오류 추적을 훨씬 더 빠르게 만듭니다 4 책 목록 및 관련 객체 쿼리하기 이 함수는 퍼블리셔와의 관계를 사용하여 back4app 데이터베이스에서 책을 쿼리합니다 퍼블리셔를 통해 우리는 책 목록을 가져올 것입니다 다음 함수 getbooklist getbooklist 를 파일 main dart main dart , 그 다음 아래 코드를 future\<list\<parseobject>> getbooklist(string publisherid) future\<list\<parseobject>> getbooklist(string publisherid) 함수 안에 교체하세요 1 querybuilder\<parseobject> querybook = 2 querybuilder\<parseobject>(parseobject('book')) 3 whereequalto('publisher', 4 (parseobject('publisher') objectid = publisherid) topointer()) 5 orderbyascending('title'); 6 final parseresponse apiresponse = await querybook query(); 7 8 if (apiresponse success && apiresponse results != null) { 9 return apiresponse results; 10 } else { 11 return \[]; 12 } 이 기능을 만들려면 다음 단계를 따르세요 parsequery parsequery 객체를 생성하여 book book 클래스에 대한 조건을 쿼리에 삽입하여 books books 를 검색합니다 publisher publisher 필드가 pointer pointer 인 publisher parseobject publisher parseobject 와 같도록 합니다 결과를 오름차순으로 정렬합니다 name name 순서로 쿼리의 검색 메서드를 사용하여 query() query() 메서드를 호출합니다 작업이 성공하면 book book 의 객체가 반환됩니다 앱을 실행하고 새로운 쿼리를 테스트하세요 먼저 list publisher/book list publisher/book 버튼을 클릭하세요 완료되었습니다! 이 시점에서, 당신은 parse에서 flutter flutter 에서 일대다 관계를 생성하고 쿼리하는 방법을 배웠습니다 다음 가이드에서는 다대다 관계를 만드는 방법과 관련된 객체에서 데이터를 반환하는 쿼리를 수행하는 방법을 보여드리겠습니다