--- title: IDBObjectStore.get() slug: Web/API/IDBObjectStore/get translation_of: Web/API/IDBObjectStore/get ---
{{ APIRef("IndexedDB") }}
{{domxref("IDBObjectStore")}} 的接口 get()
方法 返回 {{domxref("IDBRequest")}} 对象,并在“单独的线程(separate thread)”中返回由指定键选择的“对象储存(object store)” 。这用于从对象储存检索特定记录。
如果成功找到值,则会创建其值的结构化克隆,并设置为“请求对象(request object)”的 result
。
{{ Note("This method produces the same result for: a) a record that doesn't exist in the database and b) a record that has an undefined value. To tell these situations apart, call the openCursor()
method with the same key. That method provides a cursor if the record exists, and no cursor if it does not.") }}
{{AvailableInWorkers}}
var request = objectStore.get(key);
触发与此操作相关的后续事件的 {{domxref("IDBRequest")}} 对象。
此方法可能会引发以下类型之一的 {{domxref("DOMException")}} :
Exception | Description |
---|---|
TransactionInactiveError | This {{domxref("IDBObjectStore")}}'s transaction is inactive. |
DataError |
The key or key range provided contains an invalid key. |
InvalidStateError |
The {{domxref("IDBObjectStore")}} has been deleted or removed. |
在以下的代码段中,我们在数据库上打开一个“读/写 事务(read/write transaction)”,并使用 get()
从“对象储存( object store )”中获取一个特定的记录——一个带有“Walk dog”键的示例记录。一旦检索到这个数据对象,你就可以使用普通的JavaScript更新它,然后使用 {{domxref("IDBObjectStore.put")}} 操作将其放回数据库。有关完整的工作示例,查看我们的 To-do Notifications app (view example live.)
// Let us open our database var DBOpenRequest = window.indexedDB.open("toDoList", 4); DBOpenRequest.onsuccess = function(event) { note.innerHTML += '<li>Database initialised.</li>'; // store the result of opening the database in the db variable. // This is used a lot below db = DBOpenRequest.result; // Run the getData() function to get the data from the database getData(); }; function getData() { // open a read/write db transaction, ready for retrieving the data var transaction = db.transaction(["toDoList"], "readwrite"); // report on the success of the transaction completing, when everything is done transaction.oncomplete = function(event) { note.innerHTML += '<li>Transaction completed.</li>'; }; transaction.onerror = function(event) { note.innerHTML += '<li>Transaction not opened due to error: ' + transaction.error + '</li>'; }; // create an object store on the transaction var objectStore = transaction.objectStore("toDoList"); // Make a request to get a record by key from the object store var objectStoreRequest = objectStore.get("Walk dog"); objectStoreRequest.onsuccess = function(event) { // report the success of our request note.innerHTML += '<li>Request successful.</li>'; var myRecord = objectStoreRequest.result; }; };
Specification | Status | Comment |
---|---|---|
{{SpecName('IndexedDB', '#dom-idbobjectstore-get', 'get()')}} | {{Spec2('IndexedDB')}} | |
{{SpecName("IndexedDB 2", "#dom-idbobjectstore-get", "get()")}} | {{Spec2("IndexedDB 2")}} |
{{Compat("api.IDBObjectStore.get")}}