انتقل إلى المحتوى

وحدات قواعد البيانات

وحدات ⁦SQLite⁩ و⁦PostgreSQL⁩ و⁦MySQL⁩ المدمجة

في هذه الصفحة

يوفر ⁦Elide⁩ ثلاث وحدات ⁦SQL⁩:

الوحدةنقطة الدخولنموذج الاتصال
‏⁦SQLite⁩elide:sqliteمضمّنة ومتزامنة
‏⁦PostgreSQL⁩elide:postgresاتصال شبكي وواجهة قائمة على ⁦Promise⁩
‏⁦MySQL⁩elide:mysqlاتصال شبكي وواجهة قائمة على ⁦Promise⁩

لا يوجد كائن عام ⁦Elide.db⁩. استورد المشغّل الذي تحتاجه.

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()⁩ و⁦new Database(":memory:")⁩ قاعدة بيانات في الذاكرة. ويفتح المسار قاعدة بيانات مدعومة بملف. وتكشف النسخة ⁦query⁩ و⁦prepare⁩ و⁦exec⁩ و⁦transaction⁩ و⁦loadExtension⁩ و⁦serialize⁩ و⁦close⁩.

تكشف العبارة ⁦all()⁩ و⁦values()⁩ و⁦get()⁩ و⁦run()⁩. ويقبل كلٌّ منها معاملات موضعية (⁦?⁩، ⁦?1⁩) أو مسمّاة (⁦$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();

تغلّف المعاملات دالة استدعاء متزامنة:

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⁩ و⁦MySQL⁩

يكشف كلا المشغّلين الشبكيين مصنع ⁦Database⁩ مع ⁦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();

استخدم ⁦elide:mysql⁩ والمنفذ ⁦3306⁩ لـ ⁦MySQL⁩. ويتطلب كائن الإعداد ⁦database⁩ و⁦user⁩ و⁦password⁩. ويتطلب سلوك الاتصال والاستعلام خادم قاعدة بيانات جاريًا وينبغي التحقق منه مقابل إصدار الخادم و الإعداد الذي يستخدمه تطبيقك.

انظر أيضًا

هل كانت هذه الصفحة مفيدة؟