gpt4 book ai didi

javascript - indexedDB 最高键路径

转载 作者:行者123 更新时间:2023-12-02 04:30:10 26 4
gpt4 key购买 nike

我在使用 Emberjs 适配器填充的 indexedDB 中有一个数据库。我已经像这样设置了键路径:

this.addModel(App.Device, { keyPath: 'key' });

当我第一次像这样解析数据时,我的 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");
};
};

最佳答案

使用objectStore.openKeyCursor方向为“prev”:

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

使用 Promise :

const getMaxKey = (db, storeName) => new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readonly')
const store = tx.objectStore(storeName)
const openCursorRequest = store.openKeyCursor(null, 'prev')
openCursorRequest.onsuccess = () => {
const cursor = openCursorRequest.result
resolve(cursor && cursor.key)
}
openCursorRequest.onerror = () => {
reject(openCursorRequest.error)
}
})

关于javascript - indexedDB 最高键路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23765265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com