DrizzleORM v0.31.1 发布
Jun 4, 2024

新特性

Live Queries 🎉

对于 Drizzle + Expo 的全面解释,欢迎访问 讨论版

截至 v0.31.1,Drizzle ORM 现在支持 Expo SQLite Live Queries 原生支持! 我们已经实现了一个原生的 useLiveQuery React Hook,它观察必要的数据库更改并自动重新运行数据库查询。它与 SQL-like 和 Drizzle Queries 都兼容:

import { useLiveQuery, drizzle } from 'drizzle-orm/expo-sqlite';
import { openDatabaseSync } from 'expo-sqlite/next';
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()

我们还决定提供 dataerrorupdatedAt 字段作为钩子的结果,以便遵循 React QueryElectric SQL 的实践进行简洁明了的错误处理。

Become a Gold Sponsor