数据库 SQL Database

Nitro 提供了一个内置的轻量级 SQL 数据库层。

默认数据库连接已预配置 SQLite,可用于开发模式和任何兼容 Node.js 的生产部署。默认情况下,数据将存储在 .data/db.sqlite3 中。

!TIP 您可以更改默认连接或定义更多与任何 支持的数据库 的连接。

!TIP 您可以将数据库实例集成到任何 支持的 ORM

相关阅读:DB0 Documentation

选择加入实验功能

!IMPORTANT 数据库支持目前处于实验阶段。 请参阅 db0 问题 了解状态和错误报告。

要启用数据库层,您需要启用实验性功能标志。

ts
nitro.config.ts
ts
export default defineNitroConfig({
  experimental: {
    database: true
  }
})

Also install better-sqlite3 dependency:

bash
npm
bash
npm i -D better-sqlite3

Usage

index.ts
ts
export default defineEventHandler(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,
  }
})

配置 Configuration

您可以使用“数据库”配置来配置数据库连接:

ts
nitro.config.ts
ts
export default defineNitroConfig({
  database: {
    default: {
      connector: 'sqlite',
      options: { name: 'db' }
    },
    users: {
      connector: 'postgresql',
      url: 'postgresql://username:password@hostname:port/database_name'
    }
  }
})

您可以使用“devDatabase”配置来覆盖仅适用于开发模式的数据库配置。