欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 前端Vue框架,本地数据库nedb

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

2025/12/8 7:08:16 来源:https://blog.csdn.net/RumbleWx/article/details/141937391  浏览:    关键词:前端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);}});});},

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com