7

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);
    };
};
4

2 に答える 2

10

を使用し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);
    };
};
于 2012-09-20T05:54:57.927 に答える
1

解決しました。を使用して、インクリメントされた ID を取得できますrequest.result

于 2012-09-19T21:18:42.000 に答える