2017-10-04 49 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