如何从IndexedDB中的objectstore.put()返回自动增量id?

时间:2012-09-19 21:01:37

标签: javascript indexeddb

如何使用objectstore.put()将记录插入IndexedDB后返回自动递增的ID?

以下是我的代码:

idb.indexedDB.addData = function (objectStore, data) {
    var db = idb.indexedDB.db;
    var trans = db.transaction([objectStore], READ_WRITE);
    var store = trans.objectStore(objectStore);
 
 
 
    var request = store.put(data);
    request.onsuccess = function (e) {
        //Success, how do I get the auto incremented id?
    };
    request.onerror = function (e) {
        console.log("Error Adding: ", e);
    };
};

2 个答案:

答案 0 :(得分:7)

使用e.target.result。由于API是异步的,因此必须使用回调来获取返回值,如下所示:

idb.indexedDB.addData = function (objectStore, data, callback) {
    var db = idb.indexedDB.db;
    var trans = db.transaction([objectStore], READ_WRITE);
    var store = trans.objectStore(objectStore);
      
    var request = store.put(data);
    request.onsuccess = function (e) {
        callback(e.target.result);
    };
    request.onerror = function (e) {
        console.log("Error Adding: ", e);
        callback(undefined);
    };
};

答案 1 :(得分:0)

解决。您可以使用request.result获取增加的ID。