2017-10-04 79 views
0

任何人都知道Angular2 IndexedDb.Please help me。在Angular2中從IndexedDB獲取數據

我有這樣的json響應。

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

我將此響應保存到IndexedDB。但是我在從indexedDB獲取數據時遇到問題。 我正在關注這個例子。 https://github.com/robisim74/angular2indexedDB

在服務文件中,我這樣做是爲了獲取數據。

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; 

        }); 

       }); 
     }); 
    } 

但它沒有返回anything.Can誰能請我該怎麼辦this.Or任何其他方法有從索引資料獲取數據?

回答

0

在引用「this.indexedDB」的地方,鏈接代碼的作者實際上在其服務對象上具有處理「openDBAsync」功能和getAllRecordsAsync功能的功能。它們不是indexedDB對象的函數。所以,如果你已經像你的服務那樣在你的服務上聲明瞭函數,或者正在從其他服務中導入它們,那麼你應該以正確的方式引用它們。如果他們直接在服務類中聲明,那麼只需說「this.openDBAsync('some_name',1)」,而不是你如何完成它。如果你從其他文件導入這些函數,那麼直接調用它們就像這樣「openDBAsync('some_name',1)」。

另外,看看indexedDB API,以確保你有可用的方法,所以你不會被絆倒。 https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API