IndexedDB的基础使用—数据库的创建

本文介绍了IndexedDB数据库的创建过程,强调其异步操作特性。通过示例说明了直接访问创建数据库请求对象的字段会导致错误,解决这个问题通常依赖于回调函数,如onupgradeneeded、onsuccess和onerror。详细阐述了如何利用这些回调函数完成数据库的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个IndexedDB数据库可以如下所示创建:

let request = indexedDB.open('testDB');

IndexedDB的许多操作都不是“调用–返回”类型的,而是“调用–请求”类型的。上面的代码就是典型。indexedDB.open方法返回的并不是一个数据库对象,而是一个IDBOpenDBRequest对象,从名字上可以看出来这是一个请求创建数据库的对象。

而真正的数据库对象是在IDBOpenDBRequest对象的result字段中

在这里插入图片描述

不过并不是说indexedDB.open方法执行之后就可以直接访问返回的IDBOpenDBRequest对象的result字段来获取数据库对象。因为 indexedDB.open方法是一个异步的API,如果直接访问返回值则会报错。例如:

let request1 = indexedDB.open('test');
console.log(request.result);

上面两行语句运行的结果如下图:

在这里插入图片描述

因为在访问result字段的时候,创建数据库的请求还未完成,于是便会报错。

解决异步的问题,通常的解决方法就是回调函数。IDBOpenDBRequest对象定义了三个回调函数:

  • onerror:请求失败的回调函数
  • onsuccess:请求成功的回调函数
  • onupgradeneeded:数据库版本变化回调函数

创建数据库的时候,用onsuccess回调函数就可以了。

下面是一个完整的过程:

let db;
let request = indexedDB.open('testDB');
request.onsuccess = () => {
    db = request.result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值