使用 dexie 和 angular 从 indexedDB 获取数据

Posted

技术标签:

【中文标题】使用 dexie 和 angular 从 indexedDB 获取数据【英文标题】:Get data from indexedDB using dexie and angular 【发布时间】:2021-10-15 04:47:26 【问题描述】:

我正在使用 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 中的存储方式。

indexedDB Data

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于使用 dexie 和 angular 从 indexedDB 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Dexie 中 Table.bulkPut 在 .then() 中返回啥?

有没有更好的方法可以使用 dexie 在 svelte 中编写此代码?

在 Quasar 中使用 Dexie 导出 IndexedDB 数据库

Dexie 不在生产版本中存储数据,但在开发版本中一切正常

有没有人将 Dexie 与 localbase 进行比较?

如何只修改 dexie 商店中的一个属性而不删除其余部分?