Aller au contenu

Modules de base de données

Modules SQLite, PostgreSQL et MySQL intégrés

Sur cette page

Elide fournit trois modules SQL :

ModulePoint d’entréeModèle de connexion
SQLiteelide:sqliteEmbarqué et synchrone
PostgreSQLelide:postgresConnexion réseau et API à base de Promise
MySQLelide:mysqlConnexion réseau et API à base de Promise

Il n’existe pas de globale Elide.db. Importez le pilote dont vous avez besoin.

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() et new Database(":memory:") créent une base de données en mémoire. Un chemin ouvre une base de données adossée à un fichier. L’instance expose query, prepare, exec, transaction, loadExtension, serialize et close.

Une instruction expose all(), values(), get() et run(). Chacune accepte des paramètres positionnels (?, ?1) ou nommés ($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();

Les transactions encapsulent un callback synchrone :

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 et MySQL

Les deux pilotes réseau exposent une fabrique Database dotée de 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();

Utilisez elide:mysql et le port 3306 pour MySQL. Un objet de configuration exige database, user et password. Le comportement des connexions et des requêtes nécessite un serveur de base de données en cours d’exécution et doit être validé avec la version et la configuration du serveur utilisées par votre application.

Voir aussi

Cette page vous a-t-elle aidé ?