PWA 面试题 目录

如何使用 IndexedDB 存储数据?

推荐答案

-- -------------------- ---- -------
-- --------
----- ------- - ---------------------------- ---

----------------------- - --------------- -
    ----- -- - --------------------
    -- ----------
    -- ------------------------------------------ -
        ------------------------------- - -------- ---- ---
    -
--

----------------- - --------------- -
    ----- -- - --------------------
    -- ------
    ----- ----------- - ------------------------- -------------
    ----- ----- - -----------------------------------
    
    -- ----
    ----------- --- -- ----- ----- ----- ---- -- ---
    
    -- ----
    ----- ---------- - -------------
    -------------------- - ---------- -
        -------------------------------
    --
    
    -- ----
    ----------- --- -- ----- ----- ----- ---- -- ---
    
    -- ----
    ----------------
--

--------------- - --------------- -
    ----------------------- ------ - - ------------------------
--

本题详细解读

1. 打开或创建数据库

使用 indexedDB.open("MyDatabase", 1) 来打开或创建一个名为 MyDatabase 的数据库。如果数据库不存在,它会被创建。第二个参数是数据库的版本号,用于控制数据库的升级。

2. 创建对象存储空间

onupgradeneeded 事件中,可以创建或修改数据库的结构。在这个例子中,我们检查是否存在名为 myStore 的对象存储空间,如果不存在,则创建一个新的对象存储空间,并指定 id 作为主键。

3. 开始事务

onsuccess 事件中,我们通过 db.transaction("myStore", "readwrite") 开始一个事务。事务可以是只读的 (readonly) 或读写的 (readwrite)。

4. 添加数据

使用 store.add({ id: 1, name: "John Doe", age: 30 }) 向对象存储空间中添加数据。如果数据的主键已经存在,则会抛出错误。

5. 读取数据

使用 store.get(1) 来读取主键为 1 的数据。读取操作是异步的,结果会在 onsuccess 事件中返回。

6. 更新数据

使用 store.put({ id: 1, name: "John Doe", age: 31 }) 来更新数据。如果数据的主键不存在,则会添加新数据。

7. 删除数据

使用 store.delete(1) 来删除主键为 1 的数据。

8. 错误处理

onerror 事件中处理数据库操作中的错误。可以通过 event.target.errorCode 获取错误代码。

通过以上步骤,你可以使用 IndexedDB 在浏览器中存储和操作数据。

纠错
反馈