DrizzleORM v0.31.1 发布
Jun 4, 2024
新功能
实时查询 🎉
有关 Drizzle + Expo 的完整说明,欢迎访问 discussions
从 v0.31.1
开始,Drizzle ORM 现在原生支持 Expo SQLite 实时查询!我们实现了原生的 useLiveQuery
React 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 }); // <-- enable change listeners
const db = drizzle(expo);
const App = () => {
// Re-renders automatically when data changes
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
字段,作为遵循 React Query
和 Electric SQL
实践的简洁显式错误处理钩子。