SQL 数据库
Nitro 提供了一个内置的轻量级 SQL 数据库层。
默认数据库连接已 预配置 SQLite,并且开箱即用,适用于开发模式和任何兼容 Node.js 的生产部署。默认情况下,数据将存储在 .data/db.sqlite3 中。
您可以更改默认连接或定义更多连接到任何 受支持的数据库。
您可以将数据库实例集成到任何 受支持的 ORM 中。
启用实验性功能
数据库支持目前处于实验阶段。 请参阅 db0 issues 了解状态和错误报告。
为了启用数据库层,您需要启用实验性功能标志。
export default defineNitroConfig({
experimental: {
database: true
}
})
export default defineNuxtConfig({
nitro: {
experimental: {
database: true
}
}
})
用法
index.ts
export default defineEventHandler(async () => {
const db = useDatabase();
// 创建 users 表
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)`;
// 添加新用户
const userId = String(Math.round(Math.random() * 10_000));
await db.sql`INSERT INTO users VALUES (${userId}, 'John', 'Doe', '')`;
// 查询用户
const { rows } = await db.sql`SELECT * FROM users WHERE id = ${userId}`;
return {
rows,
};
});
配置
您可以使用 database 配置数据库连接:
export default defineNitroConfig({
database: {
default: {
connector: 'sqlite',
options: { name: 'db' }
},
users: {
connector: 'postgresql',
url: 'postgresql://username:password@hostname:port/database_name'
}
}
})
export default defineNuxtConfig({
nitro: {
database: {
default: {
connector: 'sqlite',
options: { name: 'db' }
},
users: {
connector: 'postgresql',
options: {
url: 'postgresql://username:password@hostname:port/database_name'
}
}
}
}
})
您可以使用 devDatabase 配置仅覆盖开发模式下的数据库配置。