在IndexedDb中使用Date作为索引并用它排序

问题描述 投票:0回答:1

我目前正在使用

guid
作为我的对象存储中的键路径。

我想添加一个索引 -

created
- 然后我可以用它来获取最新的条目。 我添加了索引: enter image description here

这就是我最初尝试获取最新条目的方式(通过

getNewest
),但它没有按预期工作:

const latestMediaRequest = store.getAll();
latestMediaRequest.onsuccess = function (event) {
      const allData = event.target.result;
      const targetEntry = allData[allData.length - 1];  // nope               
}

这就是我目前添加条目的方式(工作):

 const request = database.transaction(storeName, "readwrite")
                .objectStore(storeName)
                .add(dbEntry); // contains "created" timestamp

这就是我通过指导(工作)的方式:

 const request = database.transaction(storeName, "readwrite")
                .objectStore(storeName)
                .get(mediaId);

我在这里创建了索引:

          request.onupgradeneeded = function (event) {
                const db = event.target.result;
                if (db.objectStoreNames.contains(storeName)) {
                    db.deleteObjectStore(storeName);
                }
                const objectStore = db.createObjectStore(storeName, { keyPath: keyPath });
                objectStore.createIndex("created", "created", { unique: false });
            };

如何修改

getNewest
片段以支持按日期索引顺序获取? 我将使用它来递归删除最旧的项目 - 所以我不能只存储单个“lastAdded”条目。

indexeddb
1个回答
0
投票

这成功了:

// "created"
const latestMediaRequest = store.index(dateIndex).openCursor();
latestMediaRequest.onsuccess = function (event) {
   const targetEntry = event.target.result.value;
}
© www.soinside.com 2019 - 2024. All rights reserved.