이 글에서는 Lobechat에서의 Dexie 사용량을 분석합니다.
lobechat에서 [데이터베이스 폴더를 확인하면 2개의 폴더가 있습니다:
클라이언트
서버
이 Lobechat의 자체 호스트 문서에는 LobeChat이 언급되어 있습니다
기본적으로 클라이언트측 데이터베이스(IndexedDB)를 사용합니다. 이것이 바로 클라이언트용 폴더와 서버용 폴더가 두 개 있는 이유입니다.
database/client/core/db.ts는 Dexie를 가져옵니다.
Dexie는 indexedDB를 위한 최소한의 래퍼입니다. 시작하기 튜토리얼에서 제공되는 간단한 dexie 예제를 살펴보겠습니다.
// db.ts import Dexie, { type EntityTable } from 'dexie'; interface Friend { id: number; name: string; age: number; } const db = new Dexie('FriendsDatabase') as Dexie & { friends: EntityTable< Friend, 'id' // primary key "id" (for the typings only) >; }; // Schema declaration: db.version(1).stores({ friends: '++id, name, age' // primary key "id" (for the runtime!) }); export type { Friend }; export { db };
애플리케이션에는 일반적으로 자체 모듈로 선언된 단일 Dexie 인스턴스가 하나 있습니다. 여기서는 필요한 테이블과 각 테이블의 인덱싱 방법을 선언합니다. Dexie 인스턴스는
전체에서 싱글톤입니다.
애플리케이션 - 요청 시 생성할 필요가 없습니다. 구성 요소나 다른 모듈이 이를 사용하여 데이터베이스를 쿼리하거나 쓸 수 있도록 모듈에서 결과 db 인스턴스를 내보냅니다.
아래에 표시된 이 줄을 사용하여 Lobechat은 BrowserDB의 싱글톤 인스턴스를 생성합니다.
export class BrowserDB extends Dexie { public files: BrowserDBTable<'files'>; public sessions: BrowserDBTable<'sessions'>; public messages: BrowserDBTable<'messages'>; public topics: BrowserDBTable<'topics'>; public plugins: BrowserDBTable<'plugins'>; public sessionGroups: BrowserDBTable<'sessionGroups'>; public users: BrowserDBTable<'users'>; constructor() { this.version(1).stores(dbSchemaV1); this.version(2).stores(dbSchemaV2); this.version(3).stores(dbSchemaV3); this.version(4) .stores(dbSchemaV4) .upgrade((trans) => this.upgradeToV4(trans)); // … more code export const browserDB = new BrowserDB();
생성자에 작성된 버전은 시간이 지남에 따라 클라이언트 측 데이터베이스 스키마가 어떻게 발전했는지 보여줍니다. 버전을 이해하려면 Dexie.version()에 대해 자세히 읽어보세요.
Thinkthroo에서는 대규모 오픈소스 프로젝트를 연구하고 아키텍처 가이드를 제공합니다. 우리는 귀하의 프로젝트에서 사용할 수 있는 tailwind로 구축된 resubale 구성 요소를 개발했습니다. Next.js, React, Node 개발 서비스를 제공합니다.
귀하의 프로젝트에 대해 논의하려면 회의를 예약하세요.
https://github.com/lobehub/lobe-chat/blob/main/src/database/client/core/db.ts
https://dexie.org/
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB
https://web.dev/articles/indexeddb
https://lobehub.com/docs/self-hosting/server-database
https://dexie.org/docs/Tutorial/React
위 내용은 Lobechat에서 IndexedDB 래퍼인 Dexie 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!