数据库

Nitro 提供了一个内置的轻量级 SQL 数据库层。
Nitro v3 Alpha 文档仍在开发中——可能会有更新、不完善的地方和偶尔的不准确信息。

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

Read more in DB0 文档.
数据库支持目前是实验性的。 有关状态和错误报告,请参阅 db0 issues

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

nitro.config.ts
import { defineNitroConfig } from "nitro/config";

export default defineNitroConfig({
  experimental: {
    database: true
  }
})
你可以更改默认连接或为任何支持的数据库定义更多连接。
你可以将数据库实例集成到任何支持的 ORM中。

用法

index.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,
  };
});

配置

你可以使用 database 配置数据库连接:

nitro.config.ts
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 配置仅覆盖开发模式的数据库配置。