Travailler avec les bases de données en Swift : PostgreSQL et MongoDB pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi un développeur Swift a-t-il besoin de bases de données ?

Les applications modernes pour iOS et macOS se passent rarement de stockage de données. Qu'il s'agisse d'une liste de tâches, d'un profil utilisateur ou d'un catalogue de produits — les données doivent être sauvegardées et récupérées quelque part. Swift, en tant que langage principal de l'écosystème Apple, fournit des outils puissants pour travailler avec les bases de données (BDD). Dans cet article, nous allons voir comment un développeur débutant peut se connecter et effectuer des opérations CRUD (création, lecture, mise à jour, suppression) avec deux systèmes populaires : le relationnel PostgreSQL et le document-oriented MongoDB.

Nous utiliserons le framework serveur Vapor (basé sur SwiftNIO) pour travailler avec PostgreSQL, et le pilote populaire MongoKitten pour MongoDB. Les deux options conviennent parfaitement pour le backend en Swift. Si vous débutez — n'ayez pas peur : tout le code sera simple et accompagné d'explications.



1. PostgreSQL et Swift : le classique des bases de données relationnelles

PostgreSQL est une base de données relationnelle puissante avec prise en charge de SQL. Pour Swift, la meilleure façon d'interagir est le framework Vapor et son ORM Fluent. Fluent permet de travailler avec les tables comme avec des structures Swift ordinaires.



1.1. Configuration d'un projet Vapor

Commencez par installer Vapor Toolbox et créez un projet :

brew install vaporvapor new MyAppcd MyApp

Ajoutez la dépendance pour PostgreSQL dans Package.swift :

dependencies: [    .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),    .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0"),    .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.0.0")]


1.2. Modèle et migration

Créons un modèle simple User :

import Fluentimport Vapor

final class User: Model, Content { static let schema = "users" @ID(key: .id) var id: UUID? @Field(key: "name") var name: String @Field(key: "email") var email: String init() { } init(id: UUID? = nil, name: String, email: String) { self.id = id self.name = name self.email = email }}

Maintenant, la migration pour créer la table :

struct CreateUser: Migration {    func prepare(on database: Database) -> EventLoopFuture<Void> {        database.schema("users")            .id()            .field("name", .string, .required)            .field("email", .string, .required)            .create()    }        func revert(on database: Database) -> EventLoopFuture<Void> {        database.schema("users").delete()    }}

Enregistrez la migration dans configure.swift :

app.migrations.add(CreateUser())


1.3. Opérations CRUD

Création d'un enregistrement (Create) :

let user = User(name: "Иван", email: "ivan@example.com")try await user.save(on: database)

Lecture (Read) :

let users = try await User.query(on: database).all()let user = try await User.find(id, on: database)

Mise à jour (Update) :

guard let user = try await User.find(id, on: database) else { return }user.name = "Новое имя"try await user.update(on: database)

Suppression (Delete) :

guard let user = try await User.find(id, on: database) else { return }try await user.delete(on: database)

Fluent génère automatiquement les requêtes SQL, ce qui simplifie grandement la vie des débutants.



2. MongoDB et Swift : la flexibilité du NoSQL

MongoDB est une base de données documentaire où les données sont stockées au format BSON (JSON binaire). Pour Swift, nous utilisons la bibliothèque MongoKitten — mature et activement maintenue.

Blogs

Book Recommendations