Flutter
...
Data Queries
Flutter에서 Parse QueryBuilder를 사용한 데이터 쿼리 최적화
17 분
flutter에서 parse query 요리책 소개 우리는 이미 querybuilder querybuilder 와 함께 get get 를 사용하여 back4app에서 단일 parseobject parseobject 를 검색하는 방법을 보았습니다 querybuilder querybuilder 를 사용하여 데이터를 검색하는 다른 많은 방법이 있습니다 여러 개체를 한 번에 검색하거나, 검색하려는 개체에 조건을 사용할 수 있으며, 그 외에도 많은 기능이 있습니다 이 가이드에서는 querybuilder querybuilder 클래스에 대해 깊이 파고들고 쿼리를 작성하는 데 사용할 수 있는 모든 메서드를 살펴볼 것입니다 flutter를 사용하여 back4app에서 쿼리를 수행하기 위해 일부 모의 데이터가 포함된 간단한 데이터베이스 클래스를 사용할 것입니다 전제 조건 안드로이드 스튜디오 https //developer android com/studio 또는 vs 코드 설치 (과 플러그인 다트와 플러터) 백4앱에서 생성된 앱 참고 새 파스 앱 튜토리얼 을 따라 백4앱에서 파스 앱을 만드는 방법을 배우세요 백4앱에 연결된 플러터 앱 참고 플러터 프로젝트에 파스 sdk 설치 을 따라 백4앱에 연결된 플러터 프로젝트를 만드세요 안드로이드 또는 ios를 실행하는 장치(또는 가상 장치) 목표 탐색하다 querybuilder querybuilder 클래스의 다양한 메서드 querybuilder 클래스 모든 parse 쿼리 작업은 querybuilder querybuilder 객체 유형을 사용하며, 이는 앱 전반에 걸쳐 데이터베이스에서 특정 데이터를 검색하는 데 도움이 됩니다 새로운 querybuilder querybuilder , 생성하려면 원하는 parseobject parseobject 서브클래스를 매개변수로 전달해야 하며, 이는 쿼리 결과를 포함할 것입니다 중요한 점은 querybuilder querybuilder 는 retrieve 메서드를 호출한 후에만 해결된다는 것입니다 query query , 따라서 쿼리를 설정하고 여러 수정자를 실제로 호출하기 전에 연결할 수 있습니다 querybuilder 클래스에 대한 자세한 내용은 여기에서 공식 문서 를 참조하십시오 back4app에서 javascript 콘솔 사용하기 back4app 애플리케이션의 대시보드 내부에서 javascript 코드를 직접 실행할 수 있는 매우 유용한 api 콘솔을 찾을 수 있습니다 이 가이드를 사용하여 back4app에 데이터 객체를 저장할 것입니다 앱의 주요 대시보드에서 다음으로 이동하십시오 core >api console >javascript core >api console >javascript 데이터 객체 저장하기 이 가이드에서 쿼리를 실행하려면 먼저 앱에 일부 데이터를 채워야 합니다 유명인 이름과 다음 필드를 사용하여 소셜 미디어 프로필 클래스를 모방하는 샘플 클래스를 생성해 보겠습니다 profile profile , 다음과 같은 필드를 사용합니다 문자열 유형 이름 이름 날짜 유형 생일 생일 숫자 (정수) 유형 친구 수 친구 수 배열 (문자열 목록) 유형 좋아하는 음식 좋아하는 음식 배열 (숫자 목록) 유형 행운의 숫자 행운의 숫자 geopoint 유형 마지막 로그인 위치 마지막 로그인 위치 여기 parse object parse object 클래스 생성 코드가 있습니다 api 콘솔에서 실행해 보세요 1 // add profile objects and create table 2 // adam sandler 3 let profile = new parse object('profile'); 4 profile set('name', 'adam sandler'); 5 profile set('birthday', new date('09/09/1966')); 6 profile set('friendcount', 2); 7 profile set('favoritefoods', \['lobster', 'bread']); 8 profile set('luckynumbers', \[2, 7]); 9 profile set('lastloginlocation', new parse geopoint(37 38412167489413, 122 01268034622319)); 10 await profile save(); 11 12 // britney spears 13 profile = new parse object('profile'); 14 profile set('name', 'britney spears'); 15 profile set('birthday', new date('12/02/1981')); 16 profile set('friendcount', 52); 17 profile set('favoritefoods', \['cake', 'bread']); 18 profile set('luckynumbers', \[22, 7]); 19 profile set('lastloginlocation', new parse geopoint(37 38412167489413, 122 01268034622319)); 20 await profile save(); 21 22 // carson kressley 23 profile = new parse object('profile'); 24 profile set('name', 'carson kressley'); 25 profile set('birthday', new date('11/11/1969')); 26 profile set('friendcount', 12); 27 profile set('favoritefoods', \['fish', 'cookies']); 28 profile set('luckynumbers', \[8, 2]); 29 profile set('lastloginlocation', new parse geopoint(37 38412167489413, 122 01268034622319)); 30 await profile save(); 31 32 // dan aykroyd 33 // creates related object membership for this user only 34 let membership = new parse object('membership'); 35 membership set('name', 'premium'); 36 membership set('expirationdate', new date('10/10/2030')) 37 await membership save(); 38 39 profile = new parse object('profile'); 40 profile set('name', 'dan aykroyd'); 41 profile set('birthday', new date('07/01/1952')); 42 profile set('friendcount', 66); 43 profile set('favoritefoods', \['jam', 'peanut butter']); 44 profile set('luckynumbers', \[22, 77]); 45 profile set('lastloginlocation', new parse geopoint(37 38412167489413, 122 01268034622319)); 46 profile set('premiummembership', membership); 47 await profile save(); 48 49 // eddie murphy 50 profile = new parse object('profile'); 51 profile set('name', 'eddie murphy'); 52 profile set('birthday', new date('04/03/1961')); 53 profile set('friendcount', 49); 54 profile set('favoritefoods', \['lettuce', 'pepper']); 55 profile set('luckynumbers', \[6, 5]); 56 profile set('lastloginlocation', new parse geopoint( 27 104919974838154, 52 61428045237739)); 57 await profile save(); 58 59 // fergie 60 profile = new parse object('profile'); 61 profile set('name', 'fergie'); 62 profile set('birthday', new date('03/27/1975')); 63 profile set('friendcount', 55); 64 profile set('favoritefoods', \['lobster', 'shrimp']); 65 profile set('luckynumbers', \[13, 7]); 66 profile set('lastloginlocation', new parse geopoint( 27 104919974838154, 52 61428045237739)); 67 await profile save(); 68 69 console log('success!'); 이 코드를 실행한 후, 데이터베이스에 여섯 개의 객체가 생성된 프로필 프로필 클래스가 있어야 합니다 새로운 클래스는 다음과 같아야 합니다 이제 모든 쿼리 빌더 쿼리 빌더 메서드의 예를 살펴보고, 각 메서드가 수행하는 작업에 대한 간단한 설명을 추가하겠습니다 이 목록의 일부 메서드는 옵션 옵션 을 추가 인수로 받을 수 있지만, 대부분의 경우 이는 마스터 키 마스터 키 사용과 관련이 있으며 이 가이드 내용과는 관련이 없으므로, 관련이 없는 경우 이 가능성은 생략됩니다 쿼리 검색기 이 방법들은 쿼리를 실행하고 그 결과를 검색하는 책임이 있으며, 항상 쿼리 구현에 존재합니다 count //retrieves the count of parseobject results that meet the query criteria 1 querybuilder\<parseobject> querybuilder = querybuilder\<parseobject>(parseobject('profile')); 2 var apiresponse = await queryplayers count(); 3 if (apiresponse success && apiresponse result != null) { 4 int countgames = apiresponse count; 5 } getobject //this quick method is used to retrieve a single parseobject instance when you know its objectid 1 ///to retrieve one object of a class it is not necessary to create a parsequery 2 ///we can query using parseobject 3 final apiresponse = await parseobject('profile') getobject('c6endlnfdq'); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var o in apiresponse results) { 7 final object = o as parseobject; 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } getall //retrieves a complete list of parseobjects 1 ///to retrieve all objects of a class it is not necessary to create a parsequery 2 ///we can query using parseobject 3 final apiresponse = await parseobject('profile') getall(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var o in apiresponse results) { 7 final object = o as parseobject; 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } query //this is the basic method for retrieving your query results, always returning an list of parseobject instances, being empty when none are found 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 // when using query() in a query without other operations, you will 3 // get every object saved in your class 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var o in apiresponse results) { 8 final object = o as parseobject; 9 print('${object objectid} ${object get\<string>('name')}'); 10 } 11 } 쿼리 조건자 이 방법들은 쿼리에 조건부 제약을 적용할 수 있는 가능성을 제공합니다 이는 쿼리에서 가장 중요한 작업이라고 할 수 있습니다 이 작업들은 결과가 검색되기 전에 모두 연결될 수 있다는 점을 기억하세요 따라서 쿼리 요구 사항을 해결하기 위해 많은 조합을 달성할 수 있습니다 wheredoesnotmatchkeyinquery //requires that a key’s value does not match a value in an object returned by a different parse query useful for multi object querying 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wheredoesnotmatchkeyinquery( 3 'friendcount', 4 'friendcount', 5 querybuilder\<parseobject>(parseobject('profile')) 6 wherelessthan('friendcount', 50)); 7 parsequery wheregreaterthan('friendcount', 10); 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')} friendcount ${object get\<int>('friendcount')}'); 13 } 14 } wherearraycontainsall //filters objects in which an array type key value must contain every value provided 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherearraycontainsall('luckynumbers', \[2, 7]); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} ${object get\<string>('name')}'); 8 } 9 } wherecoitainedin //filters objects in which a key value is contained in the provided array of values 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherecontainedin('luckynumbers', \[2, 7]); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} ${object get\<string>('name')}'); 8 } 9 } wherecontains //filters objects in which a string key value contains the provided text value be aware that this condition is case sensitive 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 // this can be slow in large databases 3 parsequery wherecontains('name', 'an'); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var object in apiresponse results as list\<parseobject>) { 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } wheredoesnotmatchquery //requires that an object contained in the given key does not match another query useful for multi object querying 1 final querybuilder\<parseobject> innerquery = querybuilder\<parseobject>(parseobject('membership')); 2 innerquery wheregreaterthan('expirationdate', datetime now()); 3 4 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 5 6 parsequery wheredoesnotmatchquery('premiummembership', innerquery); 7 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')}'); 13 } 14 } whereendswith //filters objects where specific key’s value ends with value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery whereendswith('name', 'ie'); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var o in apiresponse results) { 8 final object = o as parseobject; 9 print('${object objectid} ${object get\<string>('name')}'); 10 } 11 } whereequalto //filters objects in which a specific key’s value is equal to the provided value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery whereequalto('friendcount', 2); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var o in apiresponse results) { 8 final object = o as parseobject; 9 print('${object objectid} ${object get\<string>('name')}'); 10 } 11 } wheregreaterthan //filters objects in which a specific key’s value is greater than the provided value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery wheregreaterthan('birthday', datetime(1980, 08, 19)); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var object in apiresponse results as list\<parseobject>) { 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } wheregreaterthanorequalsto //filters objects in which a specific key’s value is greater than or equal to the provided value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery wheregreaterthanorequalsto('friendcount', 49); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var object in apiresponse results as list\<parseobject>) { 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } wherelessthan //filters objects in which a specific key’s value is lesser than the provided value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery wherelessthan('birthday', datetime(1980, 08, 19)); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var object in apiresponse results as list\<parseobject>) { 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } wherelessthanorequalto //filters objects in which a specific key’s value is lesser than or equal to the provided value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery wherelessthanorequalto('friendcount', 49); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var object in apiresponse results as list\<parseobject>) { 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } wherematcheskeyinquery //requires that a key’s value matches a value in an object returned by a different parse query useful for multi object querying 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherematcheskeyinquery( 3 'friendcount', 4 'friendcount', 5 querybuilder\<parseobject>(parseobject('profile')) 6 wherelessthan('friendcount', 50)); 7 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')} friendcount ${object get\<int>('friendcount')}'); 13 } 14 } wherematchesquery //requires that an object contained in the given key matches another query useful for multi object querying 1 final querybuilder\<parseobject> innerquery = querybuilder\<parseobject>(parseobject('membership')); 2 innerquery wheregreaterthan('expirationdate', datetime now()); 3 4 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 5 6 parsequery wherevalueexists('premiummembership', true); 7 parsequery wherematchesquery('premiummembership', innerquery); 8 9 final apiresponse = await parsequery query(); 10 11 if (apiresponse success && apiresponse results != null) { 12 for (var object in apiresponse results as list\<parseobject>) { 13 print('${object objectid} name ${object get\<string>('name')}'); 14 } 15 } wherenotcontainedin //filters objects in which a key value is not contained in the provided array of values 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherenotcontainedin('luckynumbers', \[2, 7]); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} ${object get\<string>('name')}'); 8 } 9 } wherenotequalto //filters objects in which a specific key’s value is not equal to the provided value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery wherenotequalto('friendcount', 2); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var object in apiresponse results as list\<parseobject>) { 8 print('${object objectid} ${object get\<string>('name')}'); 9 } 10 } wherestartswith //filters objects where specific key’s value starts with value 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 3 parsequery wherestartswith('name', 'adam'); 4 final apiresponse = await parsequery query(); 5 6 if (apiresponse success && apiresponse results != null) { 7 for (var o in apiresponse results) { 8 final object = o as parseobject; 9 print('${object objectid} ${object get\<string>('name')}'); 10 } 11 } wherevalueexists //filters objects in which a key value is set or no 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 //true retrieve documents with field set 3 //false retrieve documents without field set 4 parsequery wherevalueexists('premiummembership', true); 5 final apiresponse = await parsequery query(); 6 7 if (apiresponse success && apiresponse results != null) { 8 for (var object in apiresponse results as list\<parseobject>) { 9 print('${object objectid} ${object get\<string>('name')}'); 10 } 11 } 쿼리 정렬 대부분의 쿼리에서 필수적이며, parse에서 쉽게 정렬할 수 있으며 두 개 이상의 정렬 제약 조건 간에 체인할 수 있습니다 orderbyascending //sort the results in ascending order, this can be chained without overwriting previous orderings multiple keys can be used to solve ordering ties 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery orderbyascending('name'); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} ${object get\<string>('name')}'); 8 } 9 } orderbydescending //sort the results in descending order, this can be chained without overwriting previous orderings multiple keys can be used to solve ordering ties 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery orderbydescending('name'); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} ${object get\<string>('name')}'); 8 } 9 } 필드 선택 이 메서드는 쿼리 결과에 포함될 수 있는 필드 값을 결정합니다 excludekeys //return all fields in the returned objects except the ones specified 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery excludekeys(\['name']); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 //name = null 8 print('${object objectid} name ${object get\<string>('name')} birthday ${object get\<datetime>('birthday')}'); 9 } 10 } includeobject //includes nested parseobjects for the provided key 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery includeobject(\['premiummembership']); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 //name = null 8 print('${object objectid} name ${object get\<string>('name')} premiummembership ${object get\<parseobject>('premiummembership') tostring()}'); 9 } 10 } keystoreturn //return only the specified fields in the returned objects 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery keystoreturn(\['name']); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 //birthday = null 8 print('${object objectid} name ${object get\<string>('name')} birthday ${object get\<datetime>('birthday')}'); 9 } 10 } 지오포인트 쿼리 이것은 geopoint 쿼리에 특정한 방법입니다 wherenear //return all fields in the returned objects except the ones specified 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherenear( 3 'lastloginlocation', 4 parsegeopoint(latitude 37 38412167489413, longitude 122 01268034622319) 5 ); 6 7 final apiresponse = await parsequery query(); 8 9 if (apiresponse success && apiresponse results != null) { 10 for (var object in apiresponse results as list\<parseobject>) { 11 print('${object objectid} name ${object get\<string>('name')} geopoint ${object get\<parsegeopoint>('lastloginlocation') tojson()}'); 12 } 13 } wherewithingeobox 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherewithingeobox( 3 'lastloginlocation', 4 parsegeopoint(latitude 37 38412167489413, longitude 122 01268034622319), 5 parsegeopoint(latitude 37 28412167489413, longitude 121 91268034622319) 6 ); 7 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')} geopoint ${object get\<parsegeopoint>('lastloginlocation') tojson()}'); 13 } 14 } wherewithinkilometers 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherewithinkilometers( 3 'lastloginlocation', 4 parsegeopoint(latitude 37 38412167489413, longitude 122 01268034622319), 5 100 6 ); 7 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')} geopoint ${object get\<parsegeopoint>('lastloginlocation') tojson()}'); 13 } 14 } wherewithinmiles 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherewithinmiles( 3 'lastloginlocation', 4 parsegeopoint(latitude 37 38412167489413, longitude 122 01268034622319), 5 100 6 ); 7 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')} geopoint ${object get\<parsegeopoint>('lastloginlocation') tojson()}'); 13 } 14 } wherewithinradians 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery wherewithinradians( 3 'lastloginlocation', 4 parsegeopoint(latitude 37 38412167489413, longitude 122 01268034622319), 5 100 6 ); 7 8 final apiresponse = await parsequery query(); 9 10 if (apiresponse success && apiresponse results != null) { 11 for (var object in apiresponse results as list\<parseobject>) { 12 print('${object objectid} name ${object get\<string>('name')} geopoint ${object get\<parsegeopoint>('lastloginlocation') tojson()}'); 13 } 14 } 페이지 매김 이 메서드는 많은 결과를 검색하는 쿼리에 유용한 페이지 매김 유틸리티와 관련이 있습니다 setamounttoskip 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery setamounttoskip(2); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} name ${object get\<string>('name')}'); 8 } 9 } setlimit 1 final querybuilder\<parseobject> parsequery = querybuilder\<parseobject>(parseobject('profile')); 2 parsequery setlimit(2); 3 final apiresponse = await parsequery query(); 4 5 if (apiresponse success && apiresponse results != null) { 6 for (var object in apiresponse results as list\<parseobject>) { 7 print('${object objectid} name ${object get\<string>('name')}'); 8 } 9 } 복합 쿼리 이 메서드는 복합 쿼리를 생성하여 여러 parsequery 인스턴스를 결합하여 더 복잡한 결과를 얻을 수 있습니다 or //compose a compound query that is the or of the passed queries 1 final querybuilder\<parseobject> query1 = querybuilder\<parseobject>(parseobject('profile')); 2 query1 wheregreaterthan('friendcount', 10); 3 4 final querybuilder\<parseobject> query2 = querybuilder\<parseobject>(parseobject('profile')); 5 query2 wherelessthan('friendcount', 50); 6 7 querybuilder\<parseobject> mainquery = querybuilder or( 8 parseobject("profile"), 9 \[query1, query2], 10 ); 11 12 final apiresponse = await mainquery query(); 13 14 if (apiresponse success && apiresponse results != null) { 15 for (var object in apiresponse results as list\<parseobject>) { 16 print('${object objectid} name ${object get\<string>('name')}'); 17 } 18 } 결론 이 가이드의 끝에서, 당신은 parse에서 모든 데이터 쿼리 메서드를 수행하는 방법을 배웠습니다 다음 가이드에서는 flutter에서 복잡한 parse 쿼리에 대해 배울 것입니다