封装 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);}});});},