从Angular2中的IndexedDB获取数据

时间:2017-10-04 06:34:02

标签: javascript angular indexeddb

任何人都知道Angular2 IndexedDb.Please帮助我。

我有这样的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;

                    });

                });
        });
    }

但它没有返回任何内容。任何人都可以请我如何做到这一点。还有其他方法可以从IndexedDB中获取数据吗?

1 个答案:

答案 0 :(得分: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