javascript - Kuinka käyttää IndexedDB:tä Angularissa?


Onko olemassa materiaalia, jota voisi käyttää IndexedDB:n kanssa Angularissa? Etsin jotain, joka auttaa minua toteuttamaan tietojen pelastusta tai paremminkin selaimessa olevan tietokannan, vaikka se ei ole localstore, koska sen 5 MB:n rajoitus.

Vastaus #1

Käytän Dexieä, koska se on kehittyneempi ja kevyt kirjasto kaikilla ominaisuuksilla. Yhteensopiva VueJs:n, Reactin, Angularin ja Vanilla JS:n kanssa

Vaihtoehtoinen ngx-indexed-db

Vastaus #2

käytä ngx-indexed-db npm -kirjastoa:

npm install ngx-indexed-db

Tuo NgxIndexedDBModule ja alusta se:

import { NgxIndexedDBModule } from 'ngx-indexed-db';

const dbConfig: DBConfig  = {
  name: 'MyDb',
  version: 1,
  objectStoresMeta: [{
    store: 'people',
    storeConfig: { keyPath: 'id', autoIncrement: true },
    storeSchema: [
      { name: 'name', keypath: 'name', options: { unique: false } },
      { name: 'email', keypath: 'email', options: { unique: false } }
    ]
  }]
};

@NgModule({
  ...
  imports: [
    ...
    NgxIndexedDBModule.forRoot(dbConfig)
  ],
  ...
})

Muutot:

import { NgxIndexedDBModule, DBConfig } from 'ngx-indexed-db';

// Ahead of time compiles requires an exported function for factories
export function migrationFactory() {
  // The animal table was added with version 2 but none of the existing tables or data needed
  // to be modified so a migrator for that version is not included.
  return {
    1: (db, transaction) => {
      const store = transaction.objectStore('people');
      store.createIndex('country', 'country', { unique: false });
    },
    3: (db, transaction) => {
      const store = transaction.objectStore('people');
      store.createIndex('age', 'age', { unique: false });
    }
  };
}

const dbConfig: DBConfig  = {
  name: 'MyDb',
  version: 3,
  objectStoresMeta: [{
    store: 'people',
    storeConfig: { keyPath: 'id', autoIncrement: true },
    storeSchema: [
      { name: 'name', keypath: 'name', options: { unique: false } },
      { name: 'email', keypath: 'email', options: { unique: false } }
    ]
  }, {
    // animals added in version 2
    store: 'animals',
    storeConfig: { keyPath: 'id', autoIncrement: true },
    storeSchema: [
      { name: 'name', keypath: 'name', options: { unique: true } },
    ]
  }],
  // provide the migration factory to the DBConfig
  migrationFactory
};

@NgModule({
  ...
  imports: [
    ...
    NgxIndexedDBModule.forRoot(dbConfig)
  ],
  ...
})

NgxIndexedDB-palvelu Ensiksi tuo palvelu:

import { NgxIndexedDBService } from 'ngx-indexed-db';

...
  export class AppComponent {
    constructor(private dbService: NgxIndexedDBService){
    }
  }

Aiheeseen liittyviä artikkeleita