>웹 프론트엔드 >JS 튜토리얼 >Lobechat에서 IndexedDB 래퍼인 Dexie 사용

Lobechat에서 IndexedDB 래퍼인 Dexie 사용

DDD
DDD원래의
2024-10-29 07:16:30968검색

이 글에서는 Lobechat에서의 Dexie 사용량을 분석합니다.

lobechat에서 [데이터베이스 폴더를 확인하면 2개의 폴더가 있습니다:

  1. 클라이언트

  2. 서버

이 Lobechat의 자체 호스트 문서에는 LobeChat이 언급되어 있습니다

기본적으로 클라이언트측 데이터베이스(IndexedDB)를 사용합니다. 이것이 바로 클라이언트용 폴더와 서버용 폴더가 두 개 있는 이유입니다.

Usage of Dexie, an IndexedDB wrapper, in Lobechat

Usage of Dexie, an IndexedDB wrapper, in Lobechat

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 개발 서비스를 제공합니다.

귀하의 프로젝트에 대해 논의하려면 회의를 예약하세요.

Usage of Dexie, an IndexedDB wrapper, in Lobechat

Usage of Dexie, an IndexedDB wrapper, in Lobechat

참고자료:

  1. https://github.com/lobehub/lobe-chat/blob/main/src/database/client/core/db.ts

  2. https://dexie.org/

  3. https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB

  4. https://web.dev/articles/indexeddb

  5. https://lobehub.com/docs/self-hosting/server-database

  6. https://dexie.org/docs/Tutorial/React

위 내용은 Lobechat에서 IndexedDB 래퍼인 Dexie 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.