前端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);
                    }
                });
            });
        },
相关推荐
jnrjian9 分钟前
rman 1级备份可以作为database备份脚本
数据库·oracle
Hello.Reader43 分钟前
数据管理生态的核心解析:数据库、数据仓库、数据湖、数据平台与数据中台的关系与实现
数据库·数据仓库·database
Comar01 小时前
数据库sqlite3
数据库·sqlite
陌北v11 小时前
PostgreSQL 与 MySQL:如何为你的项目选择合适的数据库?
数据库·mysql·postgresql
土小帽软件测试1 小时前
F12抓包12:Performance(性能)前端性能分析
前端·抓包·软件测试学习·f12·f12抓包
Cedric_Anik1 小时前
MYSQL数据库基础篇——MYSQL的安装与使用
数据库·mysql
白总Server1 小时前
pptp解说
前端·javascript·vue.js·物联网·网络协议·数据库架构·idc
Nozomi99672 小时前
CSS—4
前端·css
小光学长2 小时前
基于vue框架的宠物领养系统l3a76(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
APItesterCris2 小时前
安全第一:API 接口接入前的防护性注意要点
服务器·网络·数据库·安全·数据挖掘