首页 > 其他分享 >一个简单的 indexedDB 应用示例

一个简单的 indexedDB 应用示例

时间:2024-04-09 15:23:11浏览次数:27  
标签:indexedDB name tx 示例 await db books let 应用

现代浏览器中会包含 indexedDB,这是一个功能比 localStorage 更加强大的数据库引擎,其 API 描述详见 W3规范:IndexedDB

如下是一个简单的应用示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/build/idb.min.js"></script>
    <title>IndexedDB BookStore</title>
  </head>
  <body>
    <button onclick="addBook()">Add a book</button>
    <button onclick="clearBooks()">Clear books</button>

    <p>Books list:</p>

    <ul id="listElem"></ul>

    <script>
      let db

      init()

      async function init() {
        // 这里的 idb 就是 'https://cdn.jsdelivr.net/npm/[email protected]/build/idb.min.js' 生成的
        // indexedDB 的别名
        db = await idb.openDb('booksDb', 1, (db) => {
          db.createObjectStore('books', { keyPath: 'name' })
        })

        list()
      }

      async function list() {
        let tx = db.transaction('books')
        let bookStore = tx.objectStore('books')

        let books = await bookStore.getAll()

        if (books.length) {
          listElem.innerHTML = books
            .map(
              (book) => `<li>
        name: ${book.name}, price: ${book.price}
      </li>`
            )
            .join('')
        } else {
          listElem.innerHTML = '<li>No books yet. Please add books.</li>'
        }
      }

      async function clearBooks() {
        let tx = db.transaction('books', 'readwrite')
        await tx.objectStore('books').clear()
        await list()
      }

      async function addBook() {
        let name = prompt('Book name?')
        let price = +prompt('Book price?')

        let tx = db.transaction('books', 'readwrite')

        try {
          await tx.objectStore('books').add({ name, price })
          await list()
        } catch (err) {
          if (err.name == 'ConstraintError') {
            alert('Such book exists already')
            await addBook()
          } else {
            throw err
          }
        }
      }

      window.addEventListener('unhandledrejection', (event) => {
        alert('Error: ' + event.reason.message)
      })
    </script>
  </body>
</html>

标签:indexedDB,name,tx,示例,await,db,books,let,应用
From: https://www.cnblogs.com/dongling/p/18124041

相关文章

  • 利用宝塔面板进行自动检测针对iis8.5应用池停止启动bat
    使用宝塔的计划任务,做了一个自动检测针对ii8.5对于高流量会假死状态,针对每分钟检测,碰到停止的应用池自动启动。代码:C:\Windows\System32\inetsrv\appcmd.exestartapppool/apppool.name:www.nongpin88.com&C:\Windows\System32\inetsrv\appcmd.exestartapppool/apppool.na......
  • @行业应用:德国ARIS Nano S-DC 10-03电动执行器
    @行业应用:德国ARISNanoS-DC10-03电动执行器@行业应用:德国ARISNanoS-DC10-03电动执行器@行业应用:德国ARISNanoS-DC10-03电动执行器LinearisN+机电阻尼器执行器LinearisN+将zuixianjin的和用户友好的线性技术与当代设计中的经典驱动技术相结合。带有dryspin......
  • visionOS 专门应用提交数大幅下降;Kimi 不断「吊打」国内各大厂 AI 模型丨 RTE 开发者
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • 成像光谱遥感技术中的AI革命:ChatGPT在遥感领域中的应用
    遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。重点介绍ChatGPT在遥感中的应用,人工智能在解释复杂数据、提供见解和帮助决策过程方面......
  • 岩土工程监测振弦采集仪在隧道工程中的监测与应用
    岩土工程监测振弦采集仪在隧道工程中的监测与应用岩土工程监测是隧道工程的重要环节之一,而振弦采集仪作为岩土工程监测中的关键设备之一,在隧道工程中的应用十分重要。本文将从振弦采集仪的基本原理、在隧道工程中的监测与应用以及其优点和局限性等方面进行阐述。 河北稳控科......
  • Dify开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问
    文章目录1.Docker部署Dify2.本地访问Dify3.Ubuntu安装Cpolar4.配置公网地址5.远程访问6.固定Cpolar公网地址7.固定地址访问本文主要介绍如何在LinuxUbuntu系统以Docker的方式快速部署Dify,并结合cpolar内网穿透工具实现公网远程访问本地Dify!Dify是一款开......
  • 深度探索:机器学习Deep Belief Networks(DBN)算法原理及其应用
    目录1.引言与背景2.定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景深度学习在近年来取得了显著进展,其在图像识别、语音识别、自然语言处理等多个领域的成功应用引发了广泛的关注。其中,DeepBeliefNetworks......
  • 深度探索:机器学习神经图灵机(Neural Turing Machines, NTMs)原理及其应用
    目录1.引言与背景2.定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景在人工智能与机器学习的前沿研究中,如何赋予计算机系统更强大的学习与推理能力,使其能模拟人类大脑的复杂认知过程,一直是科学家们不懈探索的......
  • Python中的异常处理 异常是什么? 异常处理的语法 基本的异常处理示例 捕获多个异常 fin
    Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例捕获多个异常finally语句自定义异常异常处理的最佳实践——《跟老吕学Python编程》附录资料Python中的异常处理异常是什么?异常处理的语法基本的异常处理示例Python捕获多个异常finally语句Py......
  • 深度探索:机器学习堆叠泛化(Stacked Generalization, Blending)算法原理及其应用
    目录1.引言与背景2.集成学习定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景机器学习领域中,模型性能的提升往往依赖于对数据特征的深入理解、恰当的模型选择以及有效的超参数调整。然而,在面对复杂且高度非线性......