Nitro 提供了一个内置的轻量级 SQL 数据库层。
Nitro v3 Alpha 文档仍在开发中 — 可能会有更新、不完善之处和偶尔的不准确。 :
默认的数据库连接已预配置为 SQLite,并且可以在开发模式和任何兼容 Node.js 的生产部署中开箱即用。默认情况下,数据将存储在 .data/db.sqlite 中。
为了启用数据库层,你需要启用实验特性标志。
import { defineNitroConfig } from "nitro/config";
export default defineNitroConfig({
experimental: {
database: true
}
})
import { defineHandler } from "nitro/h3";
import { useDatabase } from "nitro/database";
export default defineHandler(async () => {
const db = useDatabase();
// Create users table
await db.sql`DROP TABLE IF EXISTS users`;
await db.sql`CREATE TABLE IF NOT EXISTS users ("id" TEXT PRIMARY KEY, "firstName" TEXT, "lastName" TEXT, "email" TEXT)`;
// Add a new user
const userId = String(Math.round(Math.random() * 10_000));
await db.sql`INSERT INTO users VALUES (${userId}, 'John', 'Doe', '')`;
// Query for users
const { rows } = await db.sql`SELECT * FROM users WHERE id = ${userId}`;
return {
rows,
};
});
你可以使用 database 配置来配置数据库连接:
import { defineNitroConfig } from "nitro/config";
export default defineNitroConfig({
database: {
default: {
connector: "sqlite",
options: { name: "db" }
},
users: {
connector: "postgresql",
options: {
url: "postgresql://username:password@hostname:port/database_name"
},
},
},
});
devDatabase 配置仅在开发模式下覆盖数据库配置。