2017-06-05 135 views
1

我目前在我的对象存储中使用​​作为关键路径。使用Date作为IndexedDb中的索引并使用它进行排序

我想添加一个索引 - 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”条目。

回答

0

这奏效了:

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

'openCursor(NULL, '下一页')'从最后日期开始 – Josh