Maison > interface Web > js tutoriel > Utilisation de Dexie, un wrapper IndexedDB, dans Lobechat

Utilisation de Dexie, un wrapper IndexedDB, dans Lobechat

DDD
Libérer: 2024-10-29 07:16:30
original
971 Les gens l'ont consulté

Dans cet article, nous analysons l'utilisation de Dexie dans Lobechat.

Si vous cochez [dossier de base de données dans lobechat, il contient 2 dossiers :

  1. client

  2. serveur

Dans cette documentation auto-hébergée de Lobechat, il est mentionné que LobeChat

par défaut, il utilise une base de données côté client (IndexedDB). C'est pourquoi vous disposez de deux dossiers, un pour le client et un pour le serveur.

Usage of Dexie, an IndexedDB wrapper, in Lobechat

Usage of Dexie, an IndexedDB wrapper, in Lobechat

database/client/core/db.ts importe Dexie.

Dexie est un wrapper minimaliste pour indexedDB. Regardons un exemple simple dexie fourni dans le didacticiel de mise en route.

// 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 };
Copier après la connexion

Remarque importante :

Les applications ont généralement une seule instance Dexie déclarée comme son propre module. C'est ici que vous déclarez les tables dont vous avez besoin et comment chaque table doit être indexée. Une instance Dexie est un singleton dans tout le

application — vous n’avez pas besoin de la créer à la demande. Exportez l'instance de base de données résultante de votre module afin que les composants ou d'autres modules puissent l'utiliser pour interroger ou écrire dans la base de données.

En utilisant cette ligne ci-dessous, Lobechat crée une instance singleton de 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();
Copier après la connexion

les versions écrites dans le constructeur montrent comment le schéma de la base de données côté client a évolué au fil du temps. En savoir plus sur Dexie.version() pour comprendre les versions.

À propos de nous :

Chez Thinkthroo, nous étudions les grands projets open source et fournissons des guides architecturaux. Nous avons développé des composants resubale, construits avec le vent arrière, que vous pouvez utiliser dans votre projet. Nous proposons des services de développement Next.js, React et Node.

Prenez rendez-vous avec nous pour discuter de votre projet.

Usage of Dexie, an IndexedDB wrapper, in Lobechat

Usage of Dexie, an IndexedDB wrapper, in Lobechat

Références :

  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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal