Zum Inhalt springen

Datenbankmodule

Eingebaute Module für SQLite, PostgreSQL und MySQL

Auf dieser Seite

Elide stellt drei SQL-Module bereit:

ModulEinstiegspunktVerbindungsmodell
SQLiteelide:sqliteEingebettet und synchron
PostgreSQLelide:postgresNetzwerkverbindung und Promise-basierte API
MySQLelide:mysqlNetzwerkverbindung und Promise-basierte API

Es gibt kein Global Elide.db. Importieren Sie den benötigten Treiber.

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() und new Database(":memory:") erstellen eine In-Memory-Datenbank. Ein Pfad öffnet eine dateibasierte Datenbank. Die Instanz stellt query, prepare, exec, transaction, loadExtension, serialize und close bereit.

Eine Anweisung stellt all(), values(), get() und run() bereit. Jede akzeptiert positionelle (?, ?1) oder benannte ($name) Parameter:

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();

Transaktionen umschließen einen synchronen Callback:

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

Beide Netzwerktreiber stellen eine Database-Factory mit connect bereit:

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();

Verwenden Sie für MySQL elide:mysql und Port 3306. Ein Konfigurationsobjekt erfordert database, user und password. Verbindungs- und Abfrageverhalten erfordern einen laufenden Datenbankserver und sollten gegen die Serverversion und Konfiguration validiert werden, die Ihre Anwendung verwendet.

Siehe auch

War diese Seite hilfreich?