ホームページ > ウェブフロントエンド > jsチュートリアル > Lobechat での IndexedDB ラッパーである Dexie の使用法

Lobechat での IndexedDB ラッパーである Dexie の使用法

DDD
リリース: 2024-10-29 07:16:30
オリジナル
998 人が閲覧しました

この記事では、Lobechat での Dexie の使用状況を分析します。

[lobechat のデータベース フォルダーを確認すると、2 つのフォルダーがあります:

  1. クライアント

  2. サーバー

この Lobechat のセルフホスト ドキュメントでは、LobeChat

について言及されています。 デフォルトでは、クライアント側データベース (IndexedDB) が使用されます。そのため、クライアント用とサーバー用の 2 つのフォルダーが存在します。

Usage of Dexie, an IndexedDB wrapper, in Lobechat

Usage of Dexie, an IndexedDB wrapper, in Lobechat

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 開発サービスを提供します。

プロジェクトについて話し合うためのミーティングを予約してください。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート