Trabajo con bases de datos en Swift: PostgreSQL y MongoDB

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con bases de datos en Swift

Swift hace tiempo que dejó de ser un lenguaje exclusivo para el desarrollo móvil. Con la aparición de frameworks de servidor como Vapor y Kitura, Swift se ha convertido en una herramienta completa para crear soluciones backend. Un aspecto clave de cualquier sistema de servidor es el trabajo con bases de datos. En este artículo, veremos cómo conectarse e interactuar con dos SGBD populares: la relacional PostgreSQL y la orientada a documentos MongoDB. Aprenderá qué bibliotecas usar, cómo configurar la conexión y realizar operaciones CRUD básicas en Swift puro.



PostgreSQL en Swift: configuración y operaciones básicas

PostgreSQL es una de las bases de datos relacionales más confiables. Para trabajar con ella en Swift existen varias bibliotecas, pero la más popular es PostgresNIO, un controlador asíncrono construido sobre SwiftNIO. Si usa el framework Vapor, el trabajo con PostgreSQL se simplifica a través del ORM Fluent.



Conexión a PostgreSQL mediante PostgresNIO

Comencemos con la instalación de la dependencia. En Package.swift agregue:

// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "PostgresNIO", package: "postgres-nio") ]) ])


Ejemplo de conexión y ejecución de una consulta SELECT simple:

import PostgresNIOimport NIOCoreimport NIOPosix

let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)

let config = PostgresConnection.Configuration( host: "localhost", port: 5432, username: "myuser", password: "mypassword", database: "mydb", tls: .disable)

let connection = try await PostgresConnection.connect( on: eventLoopGroup.next(), configuration: config)

let rows = try await connection.query("SELECT id, name FROM users LIMIT 5;", logger: nil)

for try await row in rows { let id: Int = try row["id"].decode(Int.self) let name: String = try row["name"].decode(String.self) print("User: \\(id) - \\(name)")}


Trabajo con Vapor Fluent (ORM)

Fluent proporciona una API de alto nivel para trabajar con PostgreSQL. El modelo de usuario se vería así:

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 }}

// Crear un registrolet user = User(name: "Iván", email: "ivan@example.com")try await user.save(on: req.db)

// Consultar todos los usuarioslet users = try await User.query(on: req.db).all()


MongoDB en Swift: trabajo con documentos

MongoDB es una base de datos NoSQL que almacena datos en formato BSON (JSON binario). Para Swift existe el controlador oficial MongoSwift, desarrollado por MongoDB Inc. Soporta operaciones asíncronas y modo síncrono.



Instalación y conexión de MongoSwift

Agregue la dependencia en Package.swift:

dependencies: [    .package(url: "https://github.com/mongodb/mongo-swift-driver.git", from: "1.3.0")],targets: [    .target(name: "MyApp", dependencies: [        .product(name: "MongoSwift", package: "mongo-swift-driver")    ])]


Ejemplo de conexión a MongoDB local e inserción de un documento:

import MongoSwift

let client = try MongoClient("mongodb://localhost:27017")let db = client.db("mydatabase")let collection = db.collection("u

Blogs

Book Recommendations