index.getAll() on indexedDB returns 空数组

index.getAll() on indexedDB returns empty array

这里是 IndexedDB 菜鸟...

const queueStore = db.createObjectStore("queue", { keyPath: "id", autoIncrement: true });
queueStore.createIndex("HasBeenSent", ["sent"], { unique: false });

我正在排队数据,等待稍后上传到服务器,所以现在每条记录的“已发送”值为零;我稍后会更新记录以反映“已发送”等于 1。

当我尝试获取“已发送”值为零的所有记录时,我得到一个空结果,使用

request = db.transaction('queue').objectStore('queue').index('HasBeenSent').getAll(0);

如果我删除零并且只有空括号,我会得到存储中的所有行,但是如果我在每次得到空结果时在括号中包含任何值(0、1、-1 等) ,即使我确实存储了具有这些值的记录。

(我是不是配置有问题?)

如何在商店中查询 return 所有“已发送”等于零的行?

我通过各种来源了解到 getAll() 在小型数据集上没问题,但在大型数据集上可能会很慢而且很饿,所以我决定使用在大型和小型数据集上都应该表现更好的游标。但是,我 运行 遇到了同样的问题,但结果为空。

什么不起作用:

const request = db.transaction('queue').objectStore('queue').index('sent').openCursor(0);

也不

const request = db.transaction('queue').objectStore('queue').index('sent').openCursor(IDBKeyRange.only(0));

什么起作用了

const keyrange = IDBKeyRange.only(0);
const request = db.transaction('queue').objectStore('queue').index('sent').openCursor(keyrange);

我想(但从未测试过)使用 getAll(),您需要先定义键运行ge,然后将其包含在 getAll() 请求中,例如

const keyrange = IDBKeyRange.only(0);
const request = db.transaction('queue').objectStore('queue').index('sent').getAll(keyrange);