Javascript indexedDB最高密钥路径
我在indexedDB中使用Emberjs适配器填充了一个数据库。我已按如下方式设置关键路径: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
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条目”?