Elide stellt drei SQL-Module bereit:
| Modul | Einstiegspunkt | Verbindungsmodell |
|---|---|---|
| SQLite | elide:sqlite | Eingebettet und synchron |
| PostgreSQL | elide:postgres | Netzwerkverbindung und Promise-basierte API |
| MySQL | elide:mysql | Netzwerkverbindung 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.