jsrosetta

Thư viện chuẩn

Cơ sở dữ liệu (SQLite)

node:sqlite của Node.js so với go-sqlite3 (Go), rusqlite (Rust), SQLite3 (Swift) và sqlite-jdbc (Java): tạo bảng, insert và query.

Phiên bản tối thiểu
Node.js ≥ 22.13Go ≥ 1.21Rust ≥ 1.88Swift ≥ 3.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

Ví dụ dưới tạo bảng, insert vài dòng rồi đọc lại từ SQLite. DROP TABLE IF EXISTS giúp ví dụ chạy lại nhiều lần mà không lỗi. Node.js giờ có driver SQLite built-in (node:sqlite); Go không có driver chuẩn trong thư viện gốc nên phải dùng package ngoài (database/sql cùng driver go-sqlite3). Rust cũng vậy, dùng crate rusqlite với feature bundled (tự build SQLite từ source, khỏi cần cài sẵn thư viện hệ thống). Swift gọi thẳng thư viện C libsqlite3 có sẵn trên máy Apple qua module SQLite3. Java dùng driver JDBC ngoài sqlite-jdbc qua API chuẩn java.sql.

Tạo bảng, insert và query

import { DatabaseSync } from 'node:sqlite'
 
const db = new DatabaseSync('./sqlite3.db')
 
db.exec('DROP TABLE IF EXISTS persons')
db.exec('CREATE TABLE persons (name TEXT)')
 
const insert = db.prepare('INSERT INTO persons VALUES (?)')
const names = ['alice', 'bob', 'charlie']
for (const name of names) {
  insert.run(name)
}
 
const select = db.prepare('SELECT rowid AS id, name FROM persons')
for (const row of select.all()) {
  console.log(row.id, row.name) // 1 alice / 2 bob / 3 charlie
}
 
db.close()

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#databases