Saltar al contenido

Módulos de base de datos

Módulos integrados de SQLite, PostgreSQL y MySQL

En esta página

Elide proporciona tres módulos SQL:

MóduloPunto de entradaModelo de conexión
SQLiteelide:sqliteIntegrado y síncrono
PostgreSQLelide:postgresConexión de red y API basada en Promise
MySQLelide:mysqlConexión de red y API basada en Promise

No existe un global Elide.db. Importe el controlador que necesite.

SQLite

import { Database } from "elide:sqlite";

const db = new Database();
try {
  db.exec("CREATE TABLE checks (ok INTEGER)");
  db.exec("INSERT INTO checks VALUES (1)");

  console.log(db.query("SELECT ok FROM checks").get());
  // { ok: 1 }
} finally {
  db.close();
}

new Database() y new Database(":memory:") crean una base de datos en memoria. Una ruta abre una base de datos respaldada por un archivo. La instancia expone query, prepare, exec, transaction, loadExtension, serialize y close.

Una sentencia expone all(), values(), get() y run(). Cada uno acepta parámetros posicionales (?, ?1) o con nombre ($name):

import { Database } from "elide:sqlite";

const db = new Database();
db.exec("CREATE TABLE users (name TEXT, age INTEGER)");
db.prepare("INSERT INTO users VALUES (?, ?)").run("Ada", 36);
db.prepare("INSERT INTO users VALUES ($name, $age)").run({ $name: "Alan", $age: 41 });
console.log(db.prepare("SELECT name FROM users WHERE age > ?").all(40));
// [{name: "Alan"}]
db.close();

Las transacciones envuelven una función de retorno síncrona:

import { Database } from "elide:sqlite";

const db = new Database();
try {
  db.exec("CREATE TABLE checks (ok INTEGER)");
  const insert = db.transaction(() => {
    db.exec("INSERT INTO checks VALUES (1)");
  });

  insert();
  console.log(db.query("SELECT COUNT(*) AS count FROM checks").get());
  // { count: 1 }
} finally {
  db.close();
}

PostgreSQL y MySQL

Ambos controladores de red exponen una fábrica Database con connect:

import { Database } from "elide:postgres";

const db = await Database.connect({
  host: "127.0.0.1",
  port: 5432,
  database: "app",
  user: "app",
  password: process.env.DB_PASSWORD,
});

await db.close();

Use elide:mysql y el puerto 3306 para MySQL. Un objeto de configuración requiere database, user y password. El comportamiento de las conexiones y las consultas requiere un servidor de base de datos en ejecución y debe validarse con la versión y la configuración del servidor que usa su aplicación.

Véase también

¿Te resultó útil esta página?