前端Vue框架,本地数据库nedb

news2024/11/23 1:49:14

封装 db.js(文章nedb版本^1.8.0)

// db.js

// 导入 NeDB 模块
const Datastore = require('nedb')

// 创建数据库实例,最大600M或100W行
const db = new Datastore({ filename: './database.db', autoload: true, inMemoryOnly: false, maxFileSize: 600 * 1024 * 1024, maxDocs: 10000000 })

// 插入数据函数
function insertData (data, callback) {
  db.insert(data, callback)
}

// 查询数据函数
function findData (query, callback) {
  db.find(query, callback)
}

// 查询数据函数 排序
function findSortData (query, sortOptions, callback) {
  db.find(query, { sort: sortOptions }, callback)
}

// 更新数据函数
function updateData (query, update, options, callback) {
  db.update(query, update, options, callback)
}

// 删除数据
function removeData (query, callback) {
  // 调用 NeDB 的 remove 方法
  db.remove(query, { multi: true }, function (err, numRemoved) {
    if (err) {
      callback(err)
    } else {
      callback(null, numRemoved)
    }
  })
}

// 导出数据库操作函数
module.exports = {
  insertData,
  findData,
  findSortData,
  updateData,
  removeData
}

main.js中全局注册

import database from './utils/db'
Vue.prototype.$database = database

使用示例-存储

// 存储
ipValueChange(ip) {
            // console.log("选中ip变更", ip);
            this.deleteIpOption(ip).then(() => {
                let newData = {
                    type: 'config',
                    ip: ip,
                }
                this.$database.insertData(newData, (err, newDoc) => {
                    if (err) {
                        console.error(`插入ip: ${ip} 失败:`, err);
                    } else {
                        console.log(`插入ip: ${ip} 成功:`, newDoc);
                        this.getIpOptions();
                    }
                });
            })
        },


使用示例-查询

// 查询
getIpOptions() {
            let query = { type: "config" };
            this.$database.findData(query, (err, config) => {
                if (err) {
                    console.error(`查询ip数据失败:`, err);
                } else {
                    console.log(`查询ip数据成功:`, config);
                }
            });
        },


使用示例-删除

// 删除
async deleteIpOption(ip) {
            let query = {
                type: "config",
                ip: ip,
            }
            return new Promise((resolve, reject) => {
                this.$database.removeData(query, (err, data) => {
                    if (err) {
                        console.log(`删除ip: ${ip} 失败`);
                        reject(err);
                    } else {
                        console.log(`删除ip: ${ip} 成功`);
                        resolve(data);
                    }
                });
            });
        },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将 Redshift Cryptomatte AOV 与 teamrender 结合使用,成都渲染101云渲染

这篇文章将讨论在 Cinema 4D 中将 cryptomatte AOV 与 teamrender 结合使用时常见的问题和解决方案。在 Cinema 4D 中使用 AOV 时,用户希望它们的工作方式与其他 AOV 完全相同。但事实并非如此,尤其是与 teamrender 结合使用时。 在 Cinema 4D 中&#x…

【JAVA高级】并发同步工具CyclicBarrier 的使用介绍

📝个人主页🌹:个人主页 ⏩收录专栏⏪:JAVA进阶 🌹🌹期待您的关注 🌹🌹,让我们共同进步! 文章目录 CyclicBarrier 简介CyclicBarrier 的场景示意图&#xff1…

AI绘画时代的自媒体引流攻略:如何实现粉丝暴涨与盈利

一、AI绘画在自媒体引流和赚钱中的应用 创作独特视觉内容,吸引粉丝关注 AI绘画技术可以帮助自媒体从业者创作出独一无二的视觉内容,这些内容在社交媒体上具有很高的辨识度和吸引力。通过以下方式,AI绘画助力引流和赚钱: &#xf…

软件厂商与集成平台协同--打造无缝企业解决方案

引言 在现在的众多项目当中,很多企业面临着日益复杂的业务需求和不断变化的市场环境。为了保持竞争力,企业会选择采用高效的工具和系统来管理和运营。CRM(客户关系管理)软件和ERP(企业资源规划)系统是企业…

PMF源解析软件下载、安装、运行;Fpeak模式运行结果优化及误差评估;大气颗粒物理化性质等基础知识和通过PMF方法对其来源解析

目录 专题一 PMF源解析技术简要及其输入文件准备 专题二 PMF源解析技术的原理,PMF软件的实操及应用举例 专题三 PMF源解析结果的优化及误差评估 更多应用 颗粒物污染不仅对气候和环境有重要影响,而且对人体健康有严重损害,尤其在一些重污…

计算机毕设选题推荐-基于python的校园班级课程表管理系统

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的校园班级课程表…

【C++】简述STL——string类的使用

文章目录 一、STL的简述1.STL的框架2.STL版本 二、string1、string的介绍2、为什么string类要实现为模板? 三、string的构造接口四、string的容量相关的接口五、string对象修改相关的接口1、insert2.earse3、assign4、replace 六、string对象字符串运算相关接口1、c…

【Linux】《Linux 常见指令全攻略》

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

JavaScript 知识:this、apply/call/bind、Promise、async/await、HTTP 库 Axios

1、变量、声明、传递 (值、引用) javascript:void(0) 含义 javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。void() 仅仅是代表不返回任何值,但是括号内的表…

【C++ 第二十章】智能指针

1.为什么需要智能指针&#xff1f; 下面我们先分析一下下面这段程序有没有什么内存方面的问题&#xff1f;提示一下&#xff1a;注意分析下面 Func 函数中的问题。 #include<exception> int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argume…

【Python基础】这篇文章带你了解Python的基本特点,让学习Python变得事半功倍!!!

一、Python的基本特点 简单易学&#xff1a;Python语法简洁清晰&#xff0c;拥有极其简单的说明文档&#xff0c;对于初学者来说非常友好。面向对象&#xff1a;Python既支持面向过程的编程也支持面向对象的编程&#xff0c;这使得Python能够灵活地应对各种编程需求。可移植性…

投放Facebook广告开户全流程解析:从开户到广告投放的实用指南

Facebook作为全球最大的社交平台之一&#xff0c;广告业务覆盖范围广泛&#xff0c;已成为各类企业推广产品和服务的重要渠道。要在Facebook上成功投放广告&#xff0c;首先需要完成广告账户的开户流程。本文将详细介绍投放Facebook广告开户的步骤和条件&#xff0c;并解释如何…

VBA Excel 出报表

源数据 目标 PS:调休 以高亮颜色区分 整理一下 CMDBUT命令 VBA代码 Private Sub CommandButton1_Click() Dim ps As Integer Dim pe As Integer Dim srcs As Integer Dim srce As Integer Dim i As Integer Dim j As Integer Dim m As Integer Dim pname As Variant Dim pn…

力扣刷题--442. 数组中重复的数据【中等】

题目描述 给你一个长度为 n 的整数数组 nums &#xff0c;其中 nums 的所有整数都在范围 [1, n] 内&#xff0c;且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数&#xff0c;并以数组形式返回。 你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间&am…

【深度学习】线性回归的从零开始实现与简洁实现

前言 我原本后面打算用李沐老师那本《动手学深度学习》继续“抄书”&#xff0c;他们团队也免费提供了电子版(https://zh-v2.d2l.ai/d2l-zh-pytorch.pdf)。但书里涉及到代码&#xff0c;一方面展示起来不太方便&#xff0c;另一方面我自己也有很多地方看不太懂。 这让我开始思…

栈和队列的习题详解(2):用队列实现栈

前言&#xff1a; 小编在上一篇博客写了栈和队列其中一个习题&#xff0c;为了体现出题目的重要性所以我把每个题目都分开写了&#xff0c;下面废话不多说&#xff0c;开启我们今天的做题之旅~ 目录 1.用队列实现栈 1.1.题目介绍 1.2.做题方法介绍 1.3.栈功能的实现 1.3.1.…

天聚数行®近期上线了六个实用的API接口

天聚数行近期上线了一系列实用的API接口服务&#xff0c;涵盖了多种场景下的数据处理和信息查询的需求&#xff0c;为企业和开发者带来了便捷高效的工具支持。这些服务包括工商信息查询、手机状态检测&#xff08;如在网状态和空号检测&#xff09;、坐标系转换等功能&#xff…

飞利浦的精益转型之路:从传统制造到智能制造的华丽蜕变

飞利浦作为一家拥有百年历史的全球知名品牌&#xff0c;其在精益转型方面的经验值得我们深入研究和借鉴。本文将从飞利浦的转型背景、转型过程、转型成效以及给我们的启示等方面&#xff0c;探讨飞利浦如何成功实现精益转型&#xff0c;从而在新的市场竞争中脱颖而出。 一、转型…

沐渥科技:两显氮气柜和三显氮气柜要怎么选择?

两显氮气柜通常指的是控制面板上有两个LED数码显示界面&#xff0c;用于显示温度和湿度&#xff1b;三显氮气柜则有三个LED数码显示界面&#xff0c;能够直观地显示出温度、湿度和含氧量。这样的设计便于用户快速全面地了解柜内环境状态&#xff0c;不需要额外的操作即可掌握所…

录屏神器!这四款免费版助你轻松成为剪辑大师

在数字化的时代&#xff0c;录屏软件已经成为了我们工作和学习中的得力助手。对于需要记录电脑屏幕操作&#xff0c;或是制作教学视频、游戏解说等内容的用户来说&#xff0c;一款好用的录屏软件是必不可少的&#xff1b;这篇文章将分享四款免费录屏软件&#xff1a; 第一款&a…