2016-07-31 84 views
1

如果我的indexeddb中的数据格式为{名称:'example1'}与keypath - 名称和一切都按字母顺序排列,我怎么能得到最后添加的记录不是按字母顺序?indexeddb获取最后添加的记录非字母顺序

这是我的数据库

var openRequest = indexedDB.open("database",1); 
openRequest.onupgradeneeded = function(e) { 
    var thisDB = e.target.result; 

    if(!thisDB.objectStoreNames.contains("add")) { 
     var store = thisDB.createObjectStore("add",{keyPath: 'name'}); 
    } 
    if(!thisDB.objectStoreNames.contains("del")) { 
     var store = thisDB.createObjectStore("del",{keyPath: 'name'}); 
    } 

} 

openRequest.onsuccess = function(e) { 
    console.log("running onsuccess"); 
    db = e.target.result; 
    var transaction = db.transaction(["add"],"readonly"); 
    var store = transaction.objectStore("add"); 
... 

,这是获得最后一个项目的init(这是错误的 - 它需要最后一个记录开始用 'Z' 字母):

  var openRequest = indexedDB.open('database'); 
      var type = true; 

      openRequest.onsuccess = function(e) { 
       db = e.target.result; 
       if(type) { 
        var transaction = db.transaction(msg.type,"readwrite"); 
        var store = transaction.objectStore(msg.type); 
        var cursorRequest = store.openCursor(null,"prev"); 
        cursorRequest.onsuccess = function(e) { 
         var result = e.target.result; 
         if(result) { 
         var key_t = result.key; 
         var del_request = result.delete(); 
         del_request.onsuccess = function() { 
          console.log('Deleted '+key_t); 
         }; 
         } 
        } 
       } 
      }  

的感谢!

回答

2

我可以想到两种方法:

1)存储每个对象的日期创建属性。在这个属性上创建一个索引。然后用prev在这个索引上打开一个游标。

2)使用基本ID存储对象。创建名称索引。当你想加载按名称排序的对象时,使用名称索引。当你想加载最后一个插入的对象时,只需在对象存储本身上打开一个光标,它将使用自然顺序(插入顺序)。