Javascript indexedDB最高密钥路径

Javascript indexedDB最高密钥路径,javascript,ember.js,indexeddb,Javascript,Ember.js,Indexeddb,我在indexedDB中使用Emberjs适配器填充了一个数据库。我已按如下方式设置关键路径: data = data.map(function( item, idx ) { item.key = idx; return item; }); this.addModel(App.Device,{keyPath:'key'}) 当我第一次解析数据时,我的密钥会自动递增,如下所示: data = data.map(function( item, idx ) { item.ke

我在indexedDB中使用Emberjs适配器填充了一个数据库。我已按如下方式设置关键路径:

data = data.map(function( item, idx ) {
    item.key = idx;
    return item;
});
this.addModel(App.Device,{keyPath:'key'})

当我第一次解析数据时,我的密钥会自动递增,如下所示:

data = data.map(function( item, idx ) {
    item.key = idx;
    return item;
});
在所有数据都存储在indexedDB中之后,我想添加更多的数据,但我需要继续在数据中设置键值

我如何获得最高的密钥(在我的例子中,它是一个唯一的数字(如id)),以便我可以增加当前数据中的密钥以添加到数据库中

下面是我想用来添加更多数据的代码示例:

var request = indexedDB.open( 'products' );
request.onsuccess = function( e ) {
    console.log('Success!');
    that.setProperties({ db: e.target.result });
    var db = e.target.result;
    var reader = new window.FileReader();
    reader.readAsDataURL(blob_);
    var img64;
    reader.onloadend = function() {
        base64data = reader.result;
        var dataImage = {
            key: 42,
            url: url_,
            base64: base64data
        }
        that.storage.saveProduct( db, dataImage );
    }
};

request.onerror = function( e ) {
    console.log('Error!');
    console.dir( e );
};
[编辑]我忘记将saveProduct fct放入:

this.saveProduct = function( db, data ) {
    var transaction = db.transaction( ["App.Device"], "readwrite" );
    var store = transaction.objectStore( "App.Device" );

    var request = store.add( data );

    request.onerror = function( e ) {
        console.log("Error",e.target.error.name);
        //some type of error handler
    };

    request.onsuccess = function( e ) {
        console.log("Device saved in db");
    };
};

下面是最后一个条目的IDB模式:

  • 将光标值绑定到第一个ID条目。(
    “0”
    应该这样做,因为键是按字典顺序排列的。)(原始答案链接到现在已删除的问题)
  • 使用反向光标(“
    prev
    ”或“
    prevunique
    ”方向取决于您的需要)
  • 您的下一个条目将是最后一个条目(
    skip()
    continue()
    两者都可以)
  • 与方向“prev”一起使用:

    const openCursorRequest=store.openKeyCursor(null,'prev')
    openCursorRequest.onsuccess=()=>{
    const cursor=openCursorRequest.result
    const maxKey=cursor&&cursor.key
    //使用maxKey。。。
    }
    
    使用:

    如何“将光标值绑定到第一个ID条目”?