使用Date作为IndexedDb中的索引并使用它进行排序

时间:2017-06-05 22:09:04

标签: indexeddb

我目前在对象库中使用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

这就是我通过guid(工作)获得的方式:

 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”条目。

1 个答案:

答案 0 :(得分:0)

这就是诀窍:

// "created"
const latestMediaRequest = store.index(dateIndex).openCursor();
latestMediaRequest.onsuccess = function (event) {
    const targetEntry = event.target.result.value;
}