DrizzleORM v0.31.1 릴리스
Jun 4, 2024
새로운 기능
라이브 쿼리 🎉
Drizzle + Expo에 대한 자세한 설명은 토론을 참고하세요.
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/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 {JSON.stringify(data)};
};
export default App;
기존 React Hook API와의 일관성을 유지하기 위해 ORM 자체의 API는 변경하지 않았습니다. 따라서 db.select().from(users).useLive()
나 db.query.users.useFindMany()
대신 useLiveQuery(databaseQuery)
를 사용합니다.
또한 React Query
와 Electric SQL
의 모범 사례를 따라 명시적인 오류 처리를 위해 data
, error
, updatedAt
필드를 결과로 제공합니다.