Вставить значение в IndexedDB в Angular2

58
8

Я использую IndexedDB, используя Angular2. Для этого я следую приведенной ниже ссылке github. https://github.com/gilf/angular2-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, это не работает. Для вставки я использую код ниже.

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

Может кто-нибудь, пожалуйста, скажите мне, где именно я делаю неправильно. Я очень новичок в этом angular2-indexeddb. Пожалуйста, помогите мне.

спросил(а) 2017-06-06T09:42:00+03:00 3 года, 4 месяца назад
1
Решение
115

createStore, теперь openDatabase - это метод async. Итак, ниже будет работать.

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

ответил(а) 2017-12-22T14:25:00+03:00 2 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема