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 QueryElectric SQL의 모범 사례를 따라 명시적인 오류 처리를 위해 data, error, updatedAt 필드를 결과로 제공합니다.