добавить значение в IndexedDB, используя Angular 7 - PullRequest
1 голос
/ 29 мая 2019

Во-первых, я перепробовал все вопросы и ответы, связанные с этой темой. Кроме того, я попробовал связанные вопросы и попытался решить их, но безуспешно. Поэтому, пожалуйста, внимательно прочитайте мой вопрос.

Предпочтительные ссылки

NGX-индексированных дб

Поиск по ссылкам

Получение ошибки при добавлении значения в indexedDB с использованием angular2

Я хочу добавить данные в indexeddb, но как-то отображается ошибка открытия соединения с базой данных. Я приложил скриншот. Поэтому я прошу поставить на ответ один небольшой пример добавления значения в indexeddb. enter image description here

Мой код

app.components.js

import { Component, OnInit } from '@angular/core';
import { NgxIndexedDB } from 'ngx-indexed-db';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'indexDb-Angular';


  ngOnInit() {
    let  db = new NgxIndexedDB('DVdb', 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 });

    });

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

}

1 Ответ

1 голос
/ 29 мая 2019

Сделать openDatabase() асинхронным методом, чтобы он ожидал открытия базы данных, прежде чем добавлять значение.Вы можете сделать это асинхронно, используя .then(function() {

ngOnInit() {
    let  db = new NgxIndexedDB('DVdb', 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: 'Sumit', email: 'Sumit@test.com' }).then(
          () => {
              // Do something after the value was added
          },
          error => {
              console.log(error);
          }
        );
    });
}
...