1. 安装依赖 bash npx expo install expo-sqlite npm install drizzle-orm npm install -D @types/better-sqlite3 drizzle-kit
  2. 定义数据库模式 (schema.ts) typescript // database/schema.ts import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';

// 定义一张表 export const todos = sqliteTable('todos', { id: integer('id').primaryKey({ autoIncrement: true }), text: text('text').notNull(), isCompleted: integer('is_completed', { mode: 'boolean' }).notNull().default(false), createdAt: integer('created_at', { mode: 'timestamp' }).notNull().$defaultFn(() => new Date()), });

// 导出模式类型 export type InsertTodo = typeof todos.$inferInsert; export type SelectTodo = typeof todos.$inferSelect; 3. 创建数据库连接和客户端 typescript // database/index.ts import { openDatabaseSync } from 'expo-sqlite'; import { drizzle } from 'drizzle-orm/expo-sqlite';

// 打开 Expo 的 SQLite 数据库 const expoDb = openDatabaseSync('myApp.db'); // 创建 Drizzle 客户端 export const db = drizzle(expoDb); 4. 使用 Drizzle Kit 进行迁移和检查(可选但推荐) 在 package.json 中添加脚本:

json { "scripts": { "generate": "drizzle-kit generate:sqlite --schema=./database/schema.ts --out=./database/migrations", "studio": "drizzle-kit studio --schema=./database/schema.ts" } } npm run generate:根据你的 schema.ts 生成 SQL 迁移文件。

npm run studio:启动 Drizzle Studio,一个强大的 GUI 来查看和编辑你的数据库。

  1. 在应用中进行数据库操作 typescript import { db } from './database'; import { todos, type InsertTodo } from './database/schema';

// 查询 const allTodos = await db.select().from(todos).all();

// 插入 const newTodo: InsertTodo = { text: 'Learn Drizzle ORM' }; const insertedTodo = await db.insert(todos).values(newTodo).returning().get();

// 更新 await db.update(todos) .set({ isCompleted: true }) .where(eq(todos.id, 1)) .run();

// 使用复杂查询 import { desc, eq, and, or } from 'drizzle-orm'; const importantTodos = await db.select() .from(todos) .where( or( eq(todos.isCompleted, false), eq(todos.text, '%urgent%') ) ) .orderBy(desc(todos.createdAt)) .all(); 总结 追求最佳类型安全、性能和现代开发体验:毫不犹豫地选择 Drizzle ORM。

构建具有复杂离线同步功能的大型应用:深入评估 WatermelonDB。

避免使用 TypeORM:它在 React Native 环境中的体验不佳。

除非万不得已,不要直接写裸 SQL:这会让代码变得难以维护。

对于绝大多数 Expo 开发者来说,expo-sqlite + Drizzle ORM 是当前技术栈下的黄金标准,能为你提供高效、可靠且愉快的开发体验。

分类: 知识 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录