使用 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 中编写此代码?