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

封装 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);
                    }
                });
            });
        },
相关推荐
陈卓41016 分钟前
Redis-限流方案
前端·redis·bootstrap
顾林海24 分钟前
Flutter Dart 运算符全面解析
android·前端
七月丶31 分钟前
🚀 现代 Web 开发:如何优雅地管理前端版本信息?
前端
漫步云端的码农33 分钟前
Three.js场景渲染优化
前端·性能优化·three.js
悬炫33 分钟前
赋能大模型:ant-design系列组件的文档知识库搭建
前端·ai 编程
用户1083863868038 分钟前
95%开发者不知道的调试黑科技:Apipost让WebSocket开发效率翻倍的秘密
前端·后端
稀土君1 小时前
👏 用idea传递无限可能!AI FOR CODE挑战赛「创意赛道」作品提交指南
前端·人工智能·trae
OpenTiny社区1 小时前
Node.js 技术原理分析系列 4—— 使用 Chrome DevTools 分析 Node.js 性能问题
前端·开源·node.js·opentiny
赵渝强老师1 小时前
【赵渝强老师】管理MongoDB的运行
数据库·mongodb
写不出代码真君1 小时前
Proxy和defineProperty
前端·javascript