この記事では、Lobechat での Dexie の使用状況を分析します。
[lobechat のデータベース フォルダーを確認すると、2 つのフォルダーがあります:
クライアント
サーバー
この Lobechat のセルフホスト ドキュメントでは、LobeChat
について言及されています。
デフォルトでは、クライアント側データベース (IndexedDB) が使用されます。そのため、クライアント用とサーバー用の 2 つのフォルダーが存在します。
database/client/core/db.ts は Dexie をインポートします。
Dexie は、indexedDB の最小限のラッパーです。 「はじめに」チュートリアルで提供されている簡単なデクシーの例を見てみましょう。
// 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 中国語 Web サイトの他の関連記事を参照してください。