2017-10-04 2 views
0

Wer weiß über Angular2 IndexedDb.Please mir helfen.Fetch Daten von IndexedDB in Angular2

Ich habe eine JSON Antwort wie folgt.

{ 
    "response": { 
    "data": { 
     "name": "ABC", 
     "Id": "1234", 
     "address": "adthhyrr"  
    } 
    } 
} 

Ich speichere diese Antwort auf IndexedDB. Aber ich habe Probleme beim Abrufen von Daten aus indexedDB. Ich folge diesem Beispiel. https://github.com/robisim74/angular2indexedDB

In der Service-Datei mache ich das so, um Daten zu bekommen.

getAllData(): any { 

     return new Promise(resolve => 
      { 
      this.indexedDB.openDBAsync("Angular2IndexedDB", 1).forEach(

       (readyState: string) => { 

        console.log('IndexedDB service: opening db: ' + readyState); 

       }, null 

      ).then(

       () => { 

        // Gets all records from "Table". 
        this.indexedDB.getAllRecordsAsync("Login").forEach(

         // Next. 
         (record: Todo) => { 
          if (record != null) { 
           this.indexeddb_data = JSON.parse(record.description); 
           console.log('data'+this.indexeddb_data); 
           //here am getting data in this.indexeddb_data.In console i am getting. 
           return this.indexeddb_data; 
          } 
         }, null 

        ).then(() => { 

         resolve(true); 
         return this.indexeddb_data; 

        }); 

       }); 
     }); 
    } 

Aber es kehrt nicht anything.Can jemand mir bitte, wie this.Or eine andere Methode zu tun, gibt es Daten von IndexedDB zu holen?

Antwort

0

Wenn Sie "this.indexedDB" referenzieren, verfügt der Autor des verknüpften Codes tatsächlich über Funktionen auf seinem Dienstobjekt, die die Funktionen "openDBAsync" und getAllRecordsAsync verarbeiten. Sie sind keine Funktionen für das indexedDB-Objekt. Also, wenn Sie Funktionen in Ihrem Dienst deklariert haben, wie er sie von einem anderen Dienst importiert oder importiert, sollten Sie sie auf die richtige Weise referenzieren. Wenn sie direkt in der Serviceklasse deklariert sind, dann sag einfach "this.openDBAsync ('some_name', 1)" anstatt wie du es gemacht hast. Und wenn Sie diese Funktionen aus einer anderen Datei importieren, rufen Sie sie einfach direkt wie folgt auf: "openDBAsync ('some_name', 1)".

Schauen Sie sich auch die indexedDB API an, um sicherzustellen, dass die verfügbaren Methoden nicht verfügbar sind. https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API