iOS
...
Parse Swift SDK
Data Objects

Livre de recettes: Optimiser les requêtes ParseSwift

20min

Livre de recettes de requêtes pour ParseSwift

Introduction

Dans le guide des requêtes de base, nous avons introduit certaines des méthodes de base pour construire des requêtes et récupérer des données d'une Base de données Back4App. Le ParseSwift SDK offre des moyens pratiques de construire des requêtes plus complexes pour des applications du monde réel.

Dans ce guide, vous plongerez profondément dans la Query<U> (classe générique) et découvrirez toutes les méthodes que vous pouvez utiliser pour construire vos requêtes. Vous utiliserez une classe de base de données simple (nommée Profile) avec des données simulées pour effectuer des requêtes en utilisant Swift.

Avant de commencer, nous devrions établir quelques concepts sur les objets et les types de données. Dans ce guide, nous faisons référence aux objets comme tout type de données (comme les structures) qui peut être stocké dans une base de données. Dans certaines situations, ils sont également appelés éléments ou items. Les propriétés sont les membres d'un type de données (principalement des structures). Cependant, ici, nous les appelons généralement champs. ParseSwift utilise le terme ‘clé’ pour indiquer le nom des propriétés. Ainsi, tout paramètre étiqueté comme ‘clé’ dans n'importe quelle méthode du ParseSwift SDK indique que sa valeur doit correspondre au nom d'un champ.

Prérequis

Pour compléter ce tutoriel, vous aurez besoin de :

Objectif

Pour explorer les différentes méthodes que laQuery<U> classe fournit pour exécuter des requêtes.

La classe Query<U>

Pour ce guide, nous allons interroger des informations sur le contact d'une personne. Ces données sont stockées sous la classe Profile dans la base de données Back4App . Afin de récupérer des profils via une application iOS, nous devons créer la Profile structure qui contiendra ces informations.

Swift


De plus, nous utilisons l'objet Adhésion pour montrer comment les requêtes entre Profil et Adhésion interagissent entre elles. La Adhésion struct est implémentée de la manière suivante

Swift


Toute opération de requête sur une base de données Back4App est effectuée par la classe générique Query<Profil> où le type générique Profil (conformant au ParseSwift protocole) est l'objet que nous essayons de récupérer. Après avoir instancié un Query<Profil> objet, nous devons appeler l'une de ses find(_) méthodes (voir le guide des requêtes de base) pour gérer le résultat retourné par la requête.

Vous pouvez en lire plus sur la Query<U> classe ici dans la documentation officielle.

Sauvegarde des objets de données

Avec le code suivant, nous créons et sauvegardons des données pour tester diverses requêtes

Swift


Une fois le code ci-dessus exécuté, nous devrions avoir une petite base de données avec laquelle travailler.

Voir plus sur la façon de sauvegarder des données avec ParseSwift à Objets de données iOS.

Récupérateurs de requêtes

Ces méthodes sont responsables de l'exécution de la requête et de la récupération de ses résultats, étant toujours présentes dans votre implémentation de requête.

Find
First
Count
Distinct
Find all
Using the objectId


Requêtes avec des contraintes sur les champs de type chaîne

Nous commençons maintenant à appliquer des contraintes spécifiques aux requêtes. Tout d'abord, nous allons imposer des contraintes qui sélectionnent des objets uniquement lorsque un String champ de type satisfait une condition donnée. Cela et toute autre contrainte de type imposée sur un Query<Profile> objet se fait via l'objet QueryConstraint. Ci-dessous et dans les sections suivantes, nous détaillons comment construire de telles contraintes.

Equal
Regular expression
Contains substring
Matches text


Requêtes avec des contraintes sur des champs comparables

Il est très courant d'essayer de sélectionner des objets où un champ de type nombre doit être égal, distinct, supérieur ou inférieur à une valeur donnée. Cela se fait en utilisant les opérations comparables suivantes

Equal
Not equal
Less than
Less than or equal
Greater than
Greater than or equal


Ces contraintes fonctionnent également sur Date des champs de type. Par exemple, nous pouvons avoir

Swift


Pour Bool des champs de type, nous avons les options Égal et Pas égal . Par exemple

Swift


Requêtes avec des contraintes impliquant la géolocalisation

Pour les champs contenant des données de localisation (c'est-à-dire de type ParseGeoPoint) nous avons les options de requête suivantes.

Near
Contains
Within geo box
Within km/mph
Within Polygon
Within radians


Requêtes avec des contraintes impliquant des champs de type tableau

Lorsque les objets que nous souhaitons récupérer doivent satisfaire une condition donnée sur l'un de leurs champs de type tableau, ParseSwift SDK fournit les alternatives suivantes pour y parvenir.

Contained in
Contained by
Contains all


Requêtes avancées

Jusqu'à présent, nous avons introduit les principales conditions que nous pouvons appliquer sur un champ donné pour sélectionner des objets d'une base de données Back4App en utilisant ParseSwift SDK. Dans cette section, nous continuons avec la composition de requêtes et les requêtes avancées.

Exists
Does not exists
Matches key in query
Does not match key in query


Ordre des requêtes

Trier les résultats d'une requête est essentiel avant de commencer à afficher ou à manipuler ces résultats. Le SDK ParseSwift fournit les options suivantes pour y parvenir.

Ascending
Descending
Text Score


Sélection de champ

Selon les données requises lors d'une requête, cela peut prendre plus ou moins de temps. Dans certains scénarios, il peut suffire de récupérer certains champs d'un objet et d'ignorer les champs inutiles. De plus, en sélectionnant uniquement les champs dont nous avons besoin dans une requête, nous évitons de surcharger les données et améliorons les performances du processus de récupération.

Exclude
Include
Include all
Select


Pagination

Dans les grandes bases de données, la pagination est une fonctionnalité fondamentale pour interroger et gérer un grand nombre de résultats. le ParseSwift SDK fournit les méthodes suivantes pour gérer ces situations.

Limit
Skip
With count


Requêtes composées

Ces méthodes créeront des requêtes composées, qui peuvent combiner plus d'une Query<Profile> instance pour obtenir des résultats plus complexes.

And
Nor
Or


Base de données liée

Ces méthodes sont liées aux préférences et opérations de la base de données.

aggregate
explain
readPreference


Conclusion

En utilisant les différentes méthodes, objets et opérateurs fournis par le ParseSwift SDK, nous avons pu comprendre comment construire et récupérer des objets d'une Base de données Back4App. Avec ce livre de recettes, vous devriez être en mesure d'effectuer des requêtes avec des contraintes très flexibles et de gérer les résultats en fonction de votre cas d'utilisation. Pour plus de détails sur l'un des sujets ci-dessus, vous pouvez vous référer au dépôt ParseSwift.