如何从Angular2中的indexeDB获取数据

时间:2017-09-20 06:38:33

标签: json angular indexeddb

我有这样的json响应。

if (userAgent != null && userAgent.Contains("facebookexternalhit/") || userAgent.Contains("facebot") || userAgent.Contains("facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"))
            {
                return View(actionlinks);
            }

在service.ts中,我正在执行这样的请求以获取响应数据。

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

在获得响应后的上述方法中,我创建了对象库并将jsonresponse存储到登录表中。

现在我想首先获取所有登录响应数据然后我想在html页面中显示所有内容。所以我正在做这样的数据。

     login_data: Object;
      db :any;
      constructor(){
         this.db = new AngularIndexedDB('TEST', 1);
      }
      public getResponseData() : Promise<any> {
          if(typeof(this.login_data) === "undefined") {
                return this.http.get('assets/response.json')
                .toPromise().then(res => {

                 this.login_data = res.json().response.data;
                 this.db.createStore(1, (evt) => {
                 let objectStore = evt.currentTarget.result.createObjectStore('login', { keyPath: "id", autoIncrement: true });
                 objectStore.createIndex("keyname", "valuename", { unique: true });
                 console.log("db created login")
                 }).then(() => {

                 this.db.add('login', { keyname: 'loginresponse', valuename: JSON.stringify(this.login_data) }).then(() => {
                 console.log('login fields added');
                 }, (error) => {
                   console.log('error is...'+error);
                 });

                });

          return this.login_data;
        }).catch(this.handleError);
    } else {
          return Promise.resolve(this.login_data);
   }
  }

如果我不在返回语句中使用 JSON.parse,那么我收到错误 在查询之前,您需要使用createStore函数创建数据库! 我在一个组件中调用这个getAllData方法。像这样

getAllData() { 
       var data =  this.db.getAll('login').then((login) => {
        console.log("login from index"+login);
       }, (error) => {
      console.log('login'+error);
   });
  return JSON.parse(data);
 }

但是我收到语法错误位置1的JSON中的意外令牌o 。 任何人都可以帮我如何从indexedDB获取数据。

0 个答案:

没有答案