Node.js使用nedb轻量级数据库测试脚本

Node.js使用nedb轻量级数据库测试脚本

NeDB 是一个‌轻量级嵌入式数据库‌,主要用在 Node.js projects, allowing you to store data directly in memory or local files.

其特征为:‌不用装数据库服务‌:数据直接存进程序进程或本地文件,开发和部署更简单;支持条件查询、排序、正则匹配等;支持内存和文本方式数据库使用。

更多的介绍见: https://dbdb.io/db/nedb

安装数据库

首先安装好NOde.js, 然后在自定义工程目录建立Node.js工程,通过控制台通过输入:

bash 复制代码
npm install nedb

或

bash 复制代码
cnpm insrall nedb

引入nedb数据库

脚本代码

这里Node.js工程文件名设定为index.js, 打开文件写入js测试脚本:

javascript 复制代码
//注意搜索结果是乱序的,需要自行排序


// 加载模块
const nedb = require('nedb');
 
// 实例化连接对象(不带参数默认为内存数据库)
/*const db = new nedb({
  filename: '/data/save.db',
  autoload: true
}); */


const db = new nedb({
  filename: '',
  autoload: true
});


db.remove({}, { multi: true }, function (err, numRemoved) {
});

var doc1 = { name: 'd1'
               , n: 5
               , today: new Date()
               , nedbIsAwesome: true
               , notthere: null
               , notToBeSaved: undefined  // 该字段不会被保存
               , fruits: [ 'apple', 'orange', 'pear' ]
               , infos: { name: 'nedb' }
               };

setTimeout(function (){

// 插入单项
db.insert(
  doc1
, (err, ret) => {});	
	
},500);
 
setTimeout(function (){
db.findOne({
  name: 'd1'
}, (err, result) => {
	
console.log(result.today);	
console.log(result.infos.name);		
	
});	
	
} ,1000);



var doc2 = { name: 'd2'
               , n: 5
               , today: new Date()
               , nedbIsAwesome: true
               , notthere: null
               , notToBeSaved: undefined  // 该字段不会被保存
               , fruits: [ 'apple', 'orange', 'pear' ]
               , infos: { name: 'nedb' }
               };

var doc3 = { name: 'd3'
               , n: 6
               , today: new Date()
               , nedbIsAwesome: true
               , notthere: null
               , notToBeSaved: undefined  // 该字段不会被保存
               , fruits: [ 'peach', 'orange', 'pear' ]
               , infos: { name: 'nedb' }
               };

 var doc4 = { name: 'd4'
               , n: 6
               , today: new Date()
               , nedbIsAwesome: true
               , notthere: null
               , notToBeSaved: undefined  // 该字段不会被保存
               , fruits: [ 'orange', 'orange', 'pear' ]
               , infos: { name: 'nedb' }
               };

setTimeout(function (){
// 插入多项
db.insert(
  [
    doc2,
    doc3,
    doc4
  ]
, (err, ret) => {});	
	
},1500);

setTimeout(function (){
// 查询多项
db.find({
    name: {
      $in: ['d2', 'd3', 'd4']
    }
  })
  .sort({
    _id: -1
 //    _id: 1   
  })
  .exec((err, result) => {
  console.log(result.length);
  console.log(result[0].fruits[0]);
  console.log(result[1].fruits[0]);
  console.log(result[2].fruits[0]);
});	
	
},2000)

脚本测试

通过控制台输入

bash 复制代码
node inex

启动测试,得到的测试结果为:

对应数据库的打开,插入,读取等功能。

注意事项

官方库已停止维护,但不影响作为轻量数据库在简单数据库应用场景的使用。

--End--

相关推荐
李白客26 分钟前
AI 数据库落地 NL2SQL:准确率卡在四成,问题在表注释不在模型
数据库
FluxDB35 分钟前
FluxDB vs DBX vs DBeaver:GPUI、Tauri、Eclipse 三种技术栈实测
数据库·mysql
杨航 AI1 小时前
JEV的用法
java·前端·数据库
不可能片场1 小时前
AI视频成片 帧间差分把拼接缝照出来
前端·electron
数据库小学妹1 小时前
MySQL分页结果不稳定:唯一键兜底与游标分页
数据库·mysql·dba
风翼靓崽2 小时前
mysql数据备份/恢复
数据库·mysql
贝锐2 小时前
金仓、达梦、TDSQL全适配:向日葵补齐信创数据库层远程运维能力
运维·数据库·信创
xixiaoyunya3 小时前
Redis缓存三大问题实战:穿透、击穿、雪崩,我用一个电商秒杀场景讲清楚
数据库·redis·缓存
这个DBA有点耶4 小时前
Merge还是Materialize?一文讲透MySQL 8.0 CTE底层的执行计划博弈与性能陷阱
数据库·mysql·架构
Noir热爱生活4 小时前
deepseek harness,关于桌面版无法打开vscode修复方案
electron·deepseek