任何人都知道Angular2 IndexedDb.Please帮助我。
我有这样的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;
});
});
});
}
但它没有返回任何内容。任何人都可以请我如何做到这一点。还有其他方法可以从IndexedDB中获取数据吗?
答案 0 :(得分:0)
在您引用“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