在Angular2中将值插入IndexedDB

时间:2017-06-06 06:42:56

标签: angular indexeddb

我正在使用Angular2使用IndexedDB。 为此,我遵循以下 github 链接。 https://github.com/gilf/angular2-indexeddb

我正在创建像这样的数据库。

     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 表时,这不起作用。插入我使用下面的代码。

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

任何人都可以告诉我我在哪里做错了。我对这个 angular2-indexeddb 非常新。请帮助我。

1 个答案:

答案 0 :(得分:0)

createStore,现在openDatabase是异步方法。所以,下面会有效。

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);
      });
   });
  }