DrizzleORM v0.31.1 发布
Jun 4, 2024
新特性
实时查询 🎉
关于 Drizzle + Expo 的详细说明欢迎访问 讨论区
从 v0.31.1 开始,Drizzle ORM 现在原生支持 Expo SQLite 实时查询!
我们实现了一个原生的 useLiveQuery React Hook,该 Hook 观察必要的数据库更改并自动重新运行数据库查询。它支持 SQL 类似查询和 Drizzle 查询:
import { useLiveQuery, drizzle } from 'drizzle-orm/expo-sqlite';
import { openDatabaseSync } from 'expo-sqlite';
import { users } from './schema';
import { Text } from 'react-native';
const expo = openDatabaseSync('db.db', { enableChangeListener: true }); // <-- 启用更改监听器
const db = drizzle(expo);
const App = () => {
// 当数据更改时自动重新渲染
const { data } = useLiveQuery(db.select().from(users));
// const { data, error, updatedAt } = useLiveQuery(db.query.users.findFirst());
// const { data, error, updatedAt } = useLiveQuery(db.query.users.findMany());
return <Text>{JSON.stringify(data)}</Text>;
};
export default App;我们故意没有改变 ORM 自身的 API,以保持与常规 React Hook API 一致,因此我们有 useLiveQuery(databaseQuery),而不是 db.select().from(users).useLive() 或 db.query.users.useFindMany()
我们还决定提供 data、error 和 updatedAt 字段作为 Hook 的结果,以便简洁明确地处理错误,遵循 React Query 和 Electric SQL 的实践。