前端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);
                    }
                });
            });
        },
相关推荐
晋阳十二夜1 小时前
【压力测试之_Jmeter链接Oracle数据库链接】
数据库·oracle·压力测试
半点寒12W1 小时前
微信小程序实现路由拦截的方法
前端
某公司摸鱼前端2 小时前
uniapp socket 封装 (可拿去直接用)
前端·javascript·websocket·uni-app
要加油哦~2 小时前
vue | 插件 | 移动文件的插件 —— move-file-cli 插件 的安装与使用
前端·javascript·vue.js
小林学习编程2 小时前
Springboot + vue + uni-app小程序web端全套家具商场
前端·vue.js·spring boot
柳鲲鹏2 小时前
WINDOWS最快布署WEB服务器:apache2
服务器·前端·windows
GDAL3 小时前
Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
数据库·sqlite·node.js
weixin-a153003083163 小时前
【playwright篇】教程(十七)[html元素知识]
java·前端·html
DCTANT4 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
ai小鬼头4 小时前
AIStarter最新版怎么卸载AI项目?一键删除操作指南(附路径设置技巧)
前端·后端·github