~2 دقیقه مطالعه • بروزرسانی ۹ دی ۱۴۰۴
1. معرفی
ماژول node:sqlite با require('node:sqlite') بارگذاری میشود. این ماژول به توسعهدهندگان اجازه میدهد پایگاهدادههای SQLite را در حافظه یا فایل باز کنند، کوئریها را اجرا کنند، و prepared statements را مدیریت کنند.
2. کلاس DatabaseSync
new DatabaseSync(path[, options]): باز کردن اتصال پایگاهداده.- گزینهها شامل
readOnly،timeout،enableForeignKeyConstraints،allowExtension،readBigIntsو غیره هستند. database.exec(sql): اجرای کوئریهای SQL بدون بازگرداندن نتیجه.database.close(): بستن اتصال پایگاهداده.
3. Prepared Statements (StatementSync)
database.prepare(sql): کامپایل کوئری SQL به یک prepared statement.statement.run(): اجرای INSERT/UPDATE/DELETE با پارامترهای بایند شده.statement.get(): دریافت یک ردیف.statement.all(): دریافت همهٔ ردیفها.statement.iterate(): پیمایش ردیفها بهصورت کارآمد.statement.columns(): ارائهٔ اطلاعات متادیتا دربارهٔ ستونها.
4. SQLTagStore
یک کش LRU برای prepared statements است که با database.createTagStore() ساخته میشود. از template literal برای کوئریها پشتیبانی میکند:
sql.run`INSERT INTO users VALUES (1, 'Alice')`;
sql.get`SELECT * FROM users WHERE id = ${id}`;
5. توابع سفارشی و تجمعی
database.function(name, options, fn): تعریف توابع سفارشی SQLite.database.aggregate(name, options): تعریف توابع تجمعی یا window functions.
6. نشستها و تغییرات
database.createSession(): ردیابی تغییرات جدولها.session.changeset(): تولید یک changeset باینری.database.applyChangeset(): اعمال changeset روی پایگاهداده دیگر.
7. قابلیتهای امنیتی
database.setAuthorizer(callback): محدودسازی یا بررسی عملیات SQL.database.enableDefensive(true): فعالسازی حالت دفاعی برای جلوگیری از خرابکاری.
8. تبدیل نوع دادهها
انواع دادهٔ SQLite به جاوااسکریپت نگاشت میشوند:
- NULL →
null - INTEGER →
numberیاBigInt - REAL →
number - TEXT →
string - BLOB →
TypedArrayیاDataView
9. پشتیبانگیری
پایگاهدادهها را میتوان با sqlite.backup(sourceDb, path[, options]) پشتیبانگیری کرد تا دادهها بهصورت ایمن کپی شوند.
نتیجهگیری
ماژول node:sqlite ادغام SQLite را در Node.js ساده و ایمن میکند. با APIهای همگام، کش prepared statements، نشستها، و قابلیتهای امنیتی پیشرفته، این ماژول برای برنامههای سبک و ذخیرهسازی محلی بسیار مناسب است.
نوشته و پژوهش شده توسط دکتر شاهین صیامی