前端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);
                    }
                });
            });
        },
相关推荐
timeweaver14 分钟前
深度解析 Nginx 前端 location 配置与优先级:你真的用对了吗?
前端·nginx·前端工程化
鲸落落丶15 分钟前
网络通信---Axios
前端
wwy_frontend16 分钟前
React性能优化实战:从卡顿到丝滑的8个技巧
前端·react.js
小高00732 分钟前
面试官:npm run build 到底干了什么?从 package.json 到 dist 的 7 步拆解
前端·javascript·vue.js
天选打工圣体33 分钟前
个人学习笔记总结(四)抽离elpis并发布npm包
前端
代码的余温1 小时前
SQL性能优化全攻略
数据库·mysql·性能优化
JayceM2 小时前
Vue中v-show与v-if的区别
前端·javascript·vue.js
HWL56792 小时前
“preinstall“: “npx only-allow pnpm“
运维·服务器·前端·javascript·vue.js
德育处主任2 小时前
p5.js 掌握圆锥体 cone
前端·数据可视化·canvas
mazhenxiao2 小时前
qiankunjs 微前端框架笔记
前端