Erste Schritte
-
Paket installieren
Terminal-Fenster npm i @capgo/capacitor-data-storage-sqliteTerminal-Fenster pnpm add @capgo/capacitor-data-storage-sqliteTerminal-Fenster yarn add @capgo/capacitor-data-storage-sqliteTerminal-Fenster bun add @capgo/capacitor-data-storage-sqlite -
Mit nativen Projekten synchronisieren
Terminal-Fenster npx cap syncTerminal-Fenster pnpm cap syncTerminal-Fenster yarn cap syncTerminal-Fenster bunx cap sync -
Plugin konfigurieren
Grundlegendes Speicherbeispiel:
import { CapacitorDataStorageSqlite } from '@capgo/capacitor-data-storage-sqlite';// Eine Speicherdatenbank öffnenawait CapacitorDataStorageSqlite.openStore({database: 'myapp_storage'});// Daten speichernawait CapacitorDataStorageSqlite.set({key: 'user_preferences',value: JSON.stringify({ theme: 'dark' })});Verschlüsseltes Speicherbeispiel:
// Verschlüsselten Speicher öffnenawait CapacitorDataStorageSqlite.openStore({database: 'secure_storage',encrypted: true,mode: 'encryption'});// Sensible Daten speichernawait CapacitorDataStorageSqlite.set({key: 'api_token',value: 'secret_token_value'});Keine zusätzliche Einrichtung für iOS erforderlich.
Keine zusätzliche Einrichtung für Android erforderlich.
-
Grundlegende Operationen
import { CapacitorDataStorageSqlite } from '@capgo/capacitor-data-storage-sqlite';// Einen Wert setzenawait CapacitorDataStorageSqlite.set({key: 'username',value: 'john_doe'});// Einen Wert abrufenconst { value } = await CapacitorDataStorageSqlite.get({key: 'username'});console.log('Benutzername:', value); // "john_doe"// Einen Wert entfernenawait CapacitorDataStorageSqlite.remove({key: 'username'});// Alle Daten löschenawait CapacitorDataStorageSqlite.clear();// Prüfen, ob Schlüssel existiertconst { result } = await CapacitorDataStorageSqlite.iskey({key: 'username'});console.log('Schlüssel existiert:', result); // true oder false// Alle Schlüssel abrufenconst { keys } = await CapacitorDataStorageSqlite.keys();console.log('Alle Schlüssel:', keys);// Alle Werte abrufenconst { values } = await CapacitorDataStorageSqlite.values();console.log('Alle Werte:', values); -
Erweiterte Verwendung
import { CapacitorDataStorageSqlite } from '@capgo/capacitor-data-storage-sqlite';export class StorageService {private dbName = 'app_storage';private isEncrypted = false;async initialize(encrypted = false) {this.isEncrypted = encrypted;// Speicher mit Optionen öffnenawait CapacitorDataStorageSqlite.openStore({database: this.dbName,encrypted: encrypted,mode: encrypted ? 'encryption' : 'no-encryption',version: 1});}// Generische Speichermethodenasync setObject<T>(key: string, data: T): Promise<void> {const value = JSON.stringify(data);await CapacitorDataStorageSqlite.set({ key, value });}async getObject<T>(key: string): Promise<T | null> {try {const { value } = await CapacitorDataStorageSqlite.get({ key });return value ? JSON.parse(value) : null;} catch (error) {console.error('Fehler beim Abrufen des Objekts:', error);return null;}}// Batch-Operationenasync setMultiple(items: Record<string, any>): Promise<void> {for (const [key, value] of Object.entries(items)) {await CapacitorDataStorageSqlite.set({key,value: typeof value === 'string' ? value : JSON.stringify(value)});}}async getMultiple(keys: string[]): Promise<Record<string, any>> {const results: Record<string, any> = {};for (const key of keys) {try {const { value } = await CapacitorDataStorageSqlite.get({ key });results[key] = value;} catch (error) {results[key] = null;}}return results;}// Tabellenverwaltungasync getTables(): Promise<string[]> {const { tables } = await CapacitorDataStorageSqlite.tables();return tables;}async deleteTable(table: string): Promise<void> {await CapacitorDataStorageSqlite.deleteTable({ table });}// Import/Export-Funktionalitätasync exportToJson(): Promise<any[]> {const { keys } = await CapacitorDataStorageSqlite.keys();const { values } = await CapacitorDataStorageSqlite.values();return keys.map((key, index) => ({key,value: values[index]}));}async importFromJson(data: Array<{ key: string; value: string }>): Promise<void> {// Vorhandene Daten löschenawait CapacitorDataStorageSqlite.clear();// Neue Daten importierenfor (const item of data) {await CapacitorDataStorageSqlite.set({key: item.key,value: item.value});}}// Filtern und Suchenasync keysStartingWith(prefix: string): Promise<string[]> {const { keys } = await CapacitorDataStorageSqlite.keys();return keys.filter(key => key.startsWith(prefix));}async filterByPrefix(prefix: string): Promise<Array<{ key: string; value: string }>> {const { keys } = await CapacitorDataStorageSqlite.keys();const { values } = await CapacitorDataStorageSqlite.values();const filtered: Array<{ key: string; value: string }> = [];keys.forEach((key, index) => {if (key.startsWith(prefix)) {filtered.push({ key, value: values[index] });}});return filtered;}// Datenbank schließen, wenn fertigasync close(): Promise<void> {await CapacitorDataStorageSqlite.closeStore({database: this.dbName});}}// Verwendungsbeispielconst storage = new StorageService();await storage.initialize(true); // Verschlüsselung verwenden// Benutzerdaten speichernawait storage.setObject('user_profile', {id: 123,name: 'John Doe',email: 'john@example.com'});// Benutzerdaten abrufenconst profile = await storage.getObject<any>('user_profile');console.log('Benutzerprofil:', profile);
API-Referenz
Section titled “API-Referenz”Methoden
Section titled “Methoden”openStore(options: OpenStoreOptions)
Section titled “openStore(options: OpenStoreOptions)”Eine Speicherdatenbank öffnen.
Parameter:
options.database: string - Datenbanknameoptions.encrypted: boolean - Verschlüsselung aktivierenoptions.mode: string - ‘encryption’ oder ‘no-encryption’options.version: number - Datenbankversion
closeStore(options: CloseStoreOptions)
Section titled “closeStore(options: CloseStoreOptions)”Die Speicherdatenbank schließen.
set(options: SetOptions)
Section titled “set(options: SetOptions)”Ein Schlüssel-Wert-Paar speichern.
Parameter:
options.key: string - Speicherschlüsseloptions.value: string - Zu speichernder Wert
get(options: GetOptions)
Section titled “get(options: GetOptions)”Einen Wert nach Schlüssel abrufen.
Rückgabe: Promise<{ value: string }>
remove(options: RemoveOptions)
Section titled “remove(options: RemoveOptions)”Ein Schlüssel-Wert-Paar entfernen.
clear()
Section titled “clear()”Alle Daten aus dem Speicher löschen.
iskey(options: IskeyOptions)
Section titled “iskey(options: IskeyOptions)”Prüfen, ob ein Schlüssel existiert.
Rückgabe: Promise<{ result: boolean }>
keys()
Section titled “keys()”Alle Speicherschlüssel abrufen.
Rückgabe: Promise<{ keys: string[] }>
values()
Section titled “values()”Alle Speicherwerte abrufen.
Rückgabe: Promise<{ values: string[] }>
tables()
Section titled “tables()”Alle Tabellennamen abrufen.
Rückgabe: Promise<{ tables: string[] }>
deleteTable(options: DeleteTableOptions)
Section titled “deleteTable(options: DeleteTableOptions)”Eine bestimmte Tabelle löschen.
Schnittstellen
Section titled “Schnittstellen”interface OpenStoreOptions { database: string; encrypted?: boolean; mode?: string; version?: number;}
interface SetOptions { key: string; value: string;}
interface GetOptions { key: string;}
interface RemoveOptions { key: string;}Plattform-Hinweise
Section titled “Plattform-Hinweise”- Verwendet SQLite3 mit optionalem SQLCipher für Verschlüsselung
- Daten bleiben über App-Updates hinweg erhalten
- Unterstützt iOS 11.0+
Android
Section titled “Android”- Verwendet SQLite mit optionalem SQLCipher
- Daten bleiben über App-Updates hinweg erhalten
- Unterstützt Android 5.0 (API 21)+
Häufige Anwendungsfälle
Section titled “Häufige Anwendungsfälle”- Benutzereinstellungen: App-Einstellungen und Präferenzen speichern
- Cache-Verwaltung: API-Antworten und Daten zwischenspeichern
- Offline-Speicher: Daten für Offline-Zugriff speichern
- Sitzungsverwaltung: Benutzersitzungen sicher verwalten
- Token-Speicher: Authentifizierungs-Token sicher speichern
Best Practices
Section titled “Best Practices”-
Verschlüsselung für sensible Daten verwenden
// Für sensible Daten wie Tokenawait openStore({database: 'secure_db',encrypted: true,mode: 'encryption'}); -
Schlüssel mit Präfixen organisieren
// Präfixe zur Organisation verwendenawait set({ key: 'user:123:profile', value: userData });await set({ key: 'cache:api:users', value: apiData }); -
Große Daten vorsichtig behandeln
// Für große Objekte Kompression in Betracht ziehenconst compressed = compress(largeData);await set({ key: 'large_data', value: compressed }); -
Regelmäßige Bereinigung
// Abgelaufene Cache-Einträge entfernenconst keys = await keys();for (const key of keys.keys) {if (key.startsWith('cache:') && isExpired(key)) {await remove({ key });}}
Fehlerbehebung
Section titled “Fehlerbehebung”Datenbank wird nicht geöffnet:
- Prüfen Sie, ob der Datenbankname gültig ist (alphanumerisch, Unterstriche)
- Stellen Sie sicher, dass keine Sonderzeichen im Datenbanknamen enthalten sind
- Überprüfen Sie, ob der Verschlüsselungsmodus mit der vorhandenen Datenbank übereinstimmt
Daten werden nicht gespeichert:
- Stellen Sie sicher, dass
openStorevor Operationen aufgerufen wird - Überprüfen Sie auf Fehler in der Konsole
- Überprüfen Sie, ob Schlüsselnamen Strings sind
Leistungsprobleme:
- Vermeiden Sie das Speichern sehr großer Werte
- Verwenden Sie Batch-Operationen, wenn möglich
- Erwägen Sie die Verwendung mehrerer Datenbanken für verschiedene Datentypen