前端存儲-indexdb封裝:dexie.js的使用

前言

indexedDB是一個用于在瀏覽器中存儲較大數據結構的Web API,并且提供了索引功能以實現高性能查找。dexie.js是對indexdb的封裝,前端用起來很方便。在此介紹一下項目中用到的操作語句,也方便記錄。我的項目是vue3項目。

開始

1、安裝

npm install dexie

2、使用

首先新建一個全局文件db.js,用來定義項目中用到的表。注意定義時候表中用到什么字段就定義什么字段,不能多也不能少。之所以用全局文件是便于維護和修改。

我的vue項目目錄 根目錄/utils/db.js:

import Dexie from 'dexie'const db = new Dexie('YingjingDB');
db.version(1).stores({agents: 'id, agentId, name',chats: 'id, agentId, userId, conversationId, lastMessage,date',
});
export default db

1、增加

批量增加:

在頁面里我需要給agents這個表存入數據,操作如下:

<script setup>
import db from '@/utils/db.js';async function getAgentList(){//...異步請求回來agentList數組let agentList = await ...await db.open();await db.agents.bulkPut(agentList);
}
getAgentList();
</script>

db.agents.bulkPut(agentDBList)
bulkPut為往agents的表里批量插入agentList數據。如果在此步驟報錯,大部分原因是因為存儲時候的字段和db.js里定義的字段不一致!!

增加一條:

await db.agents.add({id:'xxx',agentId: new Date().getTime(),name: '張三'})

2、查詢

查詢一個鍵名:

let res = await db.chats.where('agentId').equals('a1').toArray();

或者多個鍵名聯合查詢:

let res = await db.chats.where(['agentId','userId']).equals(['a1','u1']).toArray();

3、刪除(默認鍵名為id)

刪除一個:刪除id為1的這條數據

  await db.chats.delete(1)

批量刪除:刪除id為1,2的兩條數據

let idList=[1,2]
await db.chats.bulkDelete(idList);

批量刪除:刪除鍵名為xxx的數據

db.chats.where('conversationId').equals('c1').delete() 

4、更新:更新鍵名為xxx的這一條的數據,可更改單個字段的數據

db.chats.where('conversationId').equals('c1').modify({lastMessage:'666'})

5、聯合使用

如:查找固定鍵名,排序,并批量刪除

await db.chats.where(['agentId','userId']).equals(['a1','u1']).sortBy('date').then(async res=>{console.log(res) // 通過date字段正序排列的數組let idList = []res.forEach(item=>{idList.push(item.id)})await db.chats.bulkDelete(idList); // 通過id批量刪除})

后記

這里記錄了本項目里常用的一些操作方法。基本能覆蓋項目的常用需求。dexie.js很好用,上手快,學習成本低,推薦使用。
參考文章:見識了Dexie.js,我才相信indexedDB不比SQLlite弱

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72277.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AD】6-1 PCB常用規則

間距規則&#xff1a; 可自行修改線寬與間距&#xff08;默認10mil&#xff09; 線寬規則&#xff1a;電源線寬加粗 布線過程中更改線寬&#xff1a;走線狀態下&#xff0c;shiftw更改線寬&#xff0c;線寬要在規則范圍之內過孔規則&#xff1a; 阻焊規則&#xff1a;

MyBatis 的核心配置文件是干什么的? 它的結構是怎樣的? 哪些是必須配置的,哪些是可選的?

MyBatis 的核心配置文件&#xff08;通常命名為 mybatis-config.xml&#xff09;是 MyBatis 應用程序的入口點&#xff0c;它定義了 MyBatis 的全局配置信息 。 核心配置文件的作用&#xff1a; 配置 MyBatis 的運行時行為: 通過 <settings> 標簽設置全局參數&#xff…

搜廣推校招面經四十九

tiktok廣告算法 一、倒排索引原理及Map中Key的處理 具體使用方法見【搜廣推校招面經三十六】 倒排索引&#xff08;Inverted Index&#xff09;是信息檢索系統中常用的一種數據結構&#xff0c;用于快速查找包含某個關鍵詞的文檔。以下是倒排索引的原理及Map中Key的處理方式的…

【零基礎入門unity游戲開發——unity3D篇】3D物理系統之 —— 3D剛體組件Rigidbody

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的…

C# net deepseek RAG AI開發 全流程 介紹

deepseek本地部署教程及net開發對接 步驟詳解&#xff1a;安裝教程及net開發對接全流程介紹 DeepSeekRAG 中的 RAG&#xff0c;全稱是 Retrieval-Augmented Generation&#xff08;檢索增強生成&#xff09;&#xff0c;是一種結合外部知識庫檢索與大模型生成能力的技術架構。其…

用舊的手機搭建 MQTT Broker

MQTT Broker搭建 在Android上搭建MQTT所需工具: termux 通過網盤分享的文件:termux-app_v0.118.1+github-debug_armeabi-v7a.apk 鏈接: https://pan.baidu.com/s/1Iii2szXAc02cKVGdP1EuzQ?pwd=fqsc 提取碼: fqsc 在 Termux 中使用 MQTT(Message Queuing Telemetry Trans…

b站視頻下載工具軟件怎么下載

自行配置FFMPEG環境 請優先選擇批量下載&#xff0c;會自處理視頻和音頻文件。 如果要下載更高質量請登陸。 沒有配置FFMPEG下載后會有報錯提示&#xff0c;視頻音頻文件無法合并生成mp4文件 更新批量下載標題&#xff0c;只取視頻原標題&#xff0c;B站反爬機制登陸后下載多了…

# linux有哪些桌面環境?有哪些顯示服務器協議及顯示服務器?有哪些用于開發圖形用戶界面的工具包?

linux有哪些桌面環境&#xff1f;有哪些顯示服務器協議及顯示服務器&#xff1f;有哪些用于開發圖形用戶界面的工具包&#xff1f; 文章目錄 linux有哪些桌面環境&#xff1f;有哪些顯示服務器協議及顯示服務器&#xff1f;有哪些用于開發圖形用戶界面的工具包&#xff1f;1 顯…

Java 大視界 -- Java 大數據分布式計算中的資源調度與優化策略(131)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

躲藏博弈中的策略優化:整合歷史數據、概率論與博弈論

躲藏博弈中的策略優化&#xff1a;整合歷史數據、概率論與博弈論 一、引言 躲藏博弈(Hiding Games)作為一類特殊的博弈模型&#xff0c;廣泛存在于軍事對抗、網絡安全、商業競爭甚至日常生活中。其核心在于一方(躲藏者)試圖避免被另一方(尋找者)發現&#xff0c;雙方各自選擇…

時序數據庫 TDengine 到 MySQL 數據遷移同步

簡述 TDengine 是一款開源、高性能、云原生的時序數據庫&#xff0c;專為物聯網、車聯網、工業互聯網、金融、IT 運維等場景優化設計。在工業自動化的時代&#xff0c;時序數據庫在電力、軌道交通、智能制造等領域有著廣泛的應用。 MySQL 是全球廣泛使用的開源關系型數據庫&a…

基于YOLO11深度學習的舌苔舌象檢測識別與診斷系統【python源碼+Pyqt5界面+數據集+訓練代碼】

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

【愚公系列】《高效使用DeepSeek》003-DeepSeek文檔處理和其他頂級 AI模型的區別

標題詳情作者簡介愚公搬代碼頭銜華為云特約編輯,華為云云享專家,華為開發者專家,華為產品云測專家,CSDN博客專家,CSDN商業化專家,阿里云專家博主,阿里云簽約作者,騰訊云優秀博主,騰訊云內容共創官,掘金優秀博主,亞馬遜技領云博主,51CTO博客專家等。近期榮譽2022年度…

正新雞排:在變革浪潮中領航,打造連鎖餐飲新生態

在當下風云變幻的餐飲市場中&#xff0c;連鎖品牌猶如逆水行舟&#xff0c;不進則退。作為國內坐擁萬店的知名連鎖餐飲品牌&#xff0c;正新雞排2023年賣出了7.2億片雞排&#xff0c;集團營收同比增長28%。在《2024年中國雞排連鎖品牌10強榜單》中&#xff0c;正新雞排以高達95…

MyBatis 的一級、二級緩存

文章目錄 1?? 一級緩存&#xff08;Local Cache&#xff09;&#x1f4cc; 定義&#x1f680; 示例代碼 2?? 二級緩存&#xff08;Global Cache&#xff09;&#x1f4cc; 定義&#x1f680; 使用方式 3?? 一級緩存 vs. 二級緩存 &#x1f4ca;4?? 數據共享問題&#x…

軟件性能測試與功能測試聯系和區別

隨著軟件開發技術的迅猛發展&#xff0c;軟件性能測試和功能測試成為了確保軟件質量的兩個重要環節。那么只有一字之差的性能測試和功能測試分別是什么?又有哪些聯系和區別呢? 一、軟件性能測試是什么?   軟件性能測試是為了評估軟件系統在特定條件下的表現&#xff0c;包…

Vue 框架使用難點與易錯點剖析:避開陷阱,提升開發效率

Vue.js 作為當下最流行的前端框架之一&#xff0c;以其輕量、易用和靈活的特性深受開發者喜愛。然而&#xff0c;即使是經驗豐富的開發者&#xff0c;在使用 Vue 的過程中也難免會遇到一些難點和易錯點。本文將深入分析 Vue 開發中常見的“坑”&#xff0c;并提供解決方案和代碼…

基于大模型的上瞼下垂手術全流程預測與方案優化研究報告

目錄 一、引言 1.1 研究背景與目的 1.2 研究意義 1.3 研究方法與創新點 二、上瞼下垂相關理論基礎 2.1 上瞼下垂的定義與分類 2.2 發病機制與影響 2.3 傳統治療方法概述 三、大模型技術原理與應用 3.1 大模型概述 3.2 在醫療領域的應用現狀 3.3 用于上瞼下垂預測的…

Odoo Http鑒權+調用后端接口

最近在調研Odoo18&#xff0c;包括它的前后端原理、源碼等。發現官方的開發文檔并不十分實用&#xff0c;比如標題這種簡單的實用需求&#xff0c;竟然浪費了一點時間&#xff0c;特此記錄。 官方文檔&#xff1a;External API — Odoo 18.0 documentation 前提&#xff1a;首…

【Go每日一練】實現簡單的控制臺計算器

&#x1f47b;創作者&#xff1a;丶重明 &#x1f47b;創作時間&#xff1a;2025年3月7日 &#x1f47b;擅長領域&#xff1a;運維 目錄 1.&#x1f636;?&#x1f32b;?題目&#xff1a;簡單的控制臺計算器2.&#x1f636;?&#x1f32b;?代碼輸出3.&#x1f636;?&#…