首页 > 解决方案 > 使用 dexie 和 angular 从 indexedDB 获取数据

问题描述

我正在使用 Dexie indexedDB。我可以将我的数据数组插入 indexedDb,但我无法从 indexedDB 中检索我的数据。下面是我尝试过的代码。

制作数据库

makeDatabase() {
   this.db = new Dexie('CartDB');
   this.db.version(1).stores({
      CartList: '++Id,List'
   });
}

添加到索引

 addRow() {
   this.db.CartList.add({
    List: this.items
   });
 }

获取数据

loadRows() {
   this.db.table("CartList").get().then(p => this.items = p);
}

这就是我的数据在 indexedDB 中的存储方式。

索引数据库数据

标签: angularangular10dexie

解决方案


您需要传递对象的 Id 才能获取

https://dexie.org/docs/Table/Table.get()

我看到您正在使用自动递增的主键“Id”。这是你的意图吗?如果是这样,您需要存储 Table.add() 返回的 Id 并将其用作 Table.get() 的参数。您还可以选择在调用 Table.add() 时通过将属性 Id 添加到要存储的对象来指定显式 id。在这种情况下,您也可以考虑使用 Table.put() 代替,因为它会接受覆盖现有 id 而 Table.add() 如果已经存在具有相同 id 的对象将失败。


推荐阅读