在Angular2中从IndexedDB获取数据
问题描述:
任何人都知道Angular2 IndexedDb.Please help me。在Angular2中从IndexedDB获取数据
我有这样的json响应。
{
"response": {
"data": {
"name": "ABC",
"Id": "1234",
"address": "adthhyrr"
}
}
}
我将此响应保存到IndexedDB。但是我在从indexedDB获取数据时遇到问题。 我正在关注这个例子。 https://github.com/robisim74/angular2indexedDB
在服务文件中,我这样做是为了获取数据。
getAllData(): any {
return new Promise(resolve =>
{
this.indexedDB.openDBAsync("Angular2IndexedDB", 1).forEach(
(readyState: string) => {
console.log('IndexedDB service: opening db: ' + readyState);
}, null
).then(
() => {
// Gets all records from "Table".
this.indexedDB.getAllRecordsAsync("Login").forEach(
// Next.
(record: Todo) => {
if (record != null) {
this.indexeddb_data = JSON.parse(record.description);
console.log('data'+this.indexeddb_data);
//here am getting data in this.indexeddb_data.In console i am getting.
return this.indexeddb_data;
}
}, null
).then(() => {
resolve(true);
return this.indexeddb_data;
});
});
});
}
但它没有返回anything.Can谁能请我该怎么办this.Or任何其他方法有从索引资料获取数据?
答
在引用“this.indexedDB”的地方,链接代码的作者实际上在其服务对象上具有处理“openDBAsync”功能和getAllRecordsAsync功能的功能。它们不是indexedDB对象的函数。所以,如果你已经像你的服务那样在你的服务上声明了函数,或者正在从其他服务中导入它们,那么你应该以正确的方式引用它们。如果他们直接在服务类中声明,那么只需说“this.openDBAsync('some_name',1)”,而不是你如何完成它。如果你从其他文件导入这些函数,那么直接调用它们就像这样“openDBAsync('some_name',1)”。
另外,看看indexedDB API,以确保你有可用的方法,所以你不会被绊倒。 https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API