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()

我们还决定提供 dataerrorupdatedAt 字段,作为遵循 React QueryElectric SQL 实践的简洁显式错误处理钩子。