Livre de recettes: Optimiser les requêtes ParseSwift
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.
Pour compléter ce tutoriel, vous aurez besoin de :
- Une application iOS de base pour tester les requêtes
Pour explorer les différentes méthodes que laQuery<U> classe fournit pour exécuter des requêtes.
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.
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
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.
Avec le code suivant, nous créons et sauvegardons des données pour tester diverses requêtes
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.
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.
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.
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
Ces contraintes fonctionnent également sur Date des champs de type. Par exemple, nous pouvons avoir
Pour Bool des champs de type, nous avons les options Égal et Pas égal . Par exemple
Pour les champs contenant des données de localisation (c'est-à-dire de type ParseGeoPoint) nous avons les options de requête suivantes.
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.
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.
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.
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.
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.
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.
Ces méthodes sont liées aux préférences et opérations de la base de données.
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.