Elide fournit trois modules SQL :
| Module | Point d’entrée | Modèle de connexion |
|---|---|---|
| SQLite | elide:sqlite | Embarqué et synchrone |
| PostgreSQL | elide:postgres | Connexion réseau et API à base de Promise |
| MySQL | elide:mysql | Connexion 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.