首页 > 解决方案 > Dexie 从第二个查询返回值

问题描述

我有 Typescript 代码,我在其中使用 Dexie 将一些数据放入 IndexedDB,然后我尝试使用 where 或其他方法将其拉出。每次第一次调用从 DB 获取数据返回未定义的值或空数组(取决于查询),第二次执行(相同的查询)返回良好的数据。

为了插入数据,我在 Table 对象上使用 put 方法(https://dexie.org/docs/Table/Table.put()

await Table.put(someObject)

为了获取数据,我尝试了不同的方式

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

await Table.where('index_name').equals('value').firts();

await Table.where('index_name').equals('value').toArray();

await Table.toArray();

所以更真实的代码看起来像这样:

await database.tableName.put(myObject);
... some code ...
await database.tableName.where('name').equals(myObject.name); // return undefined
await database.tableName.where('name').equals(myObject.name); // return myObject

另一种方式:

await database.tableName.put(myObject);
... some code ...
await database.tableName.toArray(); // return empty array
await database.tableName.toArray(); // return array with myObject

每个方法作为第一次总是返回未定义/空数组,总是从第二次执行(逐行)返回正确的值(正确的对象实例)。在保存和加载数据之间几乎没有指令(还有其他保存在同一个表中)。

标签: typescriptindexeddbdexie

解决方案


推荐阅读