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);
这里是 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);