2017-06-06 3 views
1

Angular2を使用してIndexedDBを使用しています。 そのために私は以下に従っていますgithub リンク。 https://github.com/gilf/angular2-indexeddbAngular2でIndexedDBに値を挿入

私はこのようにdbを作成しています。

 ngOnInit(){ 
    db.createStore(1, (evt) => { 
        let objectStore = 
    evt.currentTarget.result.createObjectStore(
         'Userdetails', { keyPath: "id", autoIncrement: true }); 

        objectStore.createIndex("name", "name", { unique: false }); 
        objectStore.createIndex("email", "email", { unique: true }); 

       }); 

     } 

しかし、私はUserdetailsテーブルに値を挿入しようとしているとき、それはないですworking.For私はコードの下に使用しています挿入します。

db.add('Userdetails', { name: 'name', email: 'email' }).then(() => { 
    // Do something after the value was added 
}, (error) => { 
    console.log(error); 
}); 

まさに私がwrong.Iをやっているところ誰も私に教えてくださいすることができが、このangular2-のIndexedDBしなさいに非常に新しいです私を助けて。

+0

「動作していません」とはどういう意味ですか?エラーメッセージがありますか?何も起こらない? – Francesco

+0

はい@Francesco私はこのようなエラーを受けていた。 データベースを照会する前にcreateStore関数を使用してデータベースを作成する必要があります。 これで解決しました。私はコードを書く間にいくつかの間違いをしていました。 – ananya

+0

これを済ませましたか?db = new AngularIndexedDB( 'myAppDb'、1); '? –

答えて

0

nowは非同期方式です。したがって、以下は動作します。

ngOnInit(): void { 
    let db: AngularIndexedDB = new AngularIndexedDB('myDb', 1); 
    db.openDatabase(1, (evt) => { 
     let objectStore = evt.currentTarget.result.createObjectStore(
     'people', { keyPath: 'id', autoIncrement: true }); 

     objectStore.createIndex('name', 'name', { unique: false }); 
     objectStore.createIndex('email', 'email', { unique: true }); 

    }).then(function() { 

     db.add('people', { name: 'nameq', email: 'email' }).then(() => { 
     // Do something after the value was added 
     }, (error) => { 
      console.log(error); 
     }); 
    }); 

    db.openDatabase(1).then(function() { 
    db.getAll('people').then((person) => { 
     console.log(person); 
     }, (error) => { 
     console.log(error); 
     }); 
    }); 
    }