nodejs nedb 封装库与使用方法示例


Posted in NodeJs onFebruary 06, 2020

本文实例讲述了nodejs nedb 封装库与使用方法。分享给大家供大家参考,具体如下:

libs/nedb.js

const Datastore = require('nedb');
function DB(database) {
  let options = {
    filename: database,
    autoload: true,
  };
  this.db = new Datastore(options);
}
DB.prototype.limit = function(offset, limit) {
  this.offset = offset || 0;
  this.limit = limit || 15;
  return this;
}
DB.prototype.sort = function(orderby) {
  this.orderby = orderby;
  return this;
}
DB.prototype.find = function(query, select) {
  return new Promise((resolve, reject) => {
    let stmt = this.db.find(query || {});
    if (this.orderby !== undefined) {
      stmt.sort(this.orderby);
    }
    if (this.offset !== undefined) {
      stmt.skip(this.offset).limit(this.limit);
    }
    if (select != undefined) {
      stmt.projection(select || {});
    }
    stmt.exec((err, docs) => {
      if (err) {
        return reject(err);
      }
      resolve(docs);
    })
  })
};
DB.prototype.findOne = function(query, select) {
  return new Promise((resolve, reject) => {
    let stmt = this.db.findOne(query || {});
    if (this.sort !== undefined) {
      stmt.sort(this.sort);
    }
    if (select != undefined) {
      stmt.projection(select || {});
    }
    stmt.exec((err, doc) => {
      if (err) {
        return reject(err);
      }
      resolve(doc);
    })
  })
}
DB.prototype.insert = function(values) {
  return new Promise((resolve, reject) => {
    this.db.insert(values, (err, newDoc) => {
      if (err) {
        return reject(err);
      }
      resolve(newDoc);
    })
  })
}
DB.prototype.update = function(query, values, options) {
  return new Promise((resolve, reject) => {
    this.db.update(query || {}, values || {}, options || {}, (err, numAffected) => {
      if (err) {
        return reject(err);
      }
      resolve(numAffected);
    })
  });
}
DB.prototype.remove = function(query, options) {
  return new Promise((resolve, reject) => {
    this.db.remove(query || {}, options || {}, (err, numAffected) => {
      if (err) {
        return reject(err);
      }
      resolve(numAffected);
    })
  });
}
module.exports = (database) => {
  return new DB(database);
}

test.js

const db = require('./libs/nedb')('testdb');
(async function() {
 await db.insert({number: 12});
 await db.insert({number: 11});
 await db.insert({number: 13});
 let res = await db.sort({number: -1}).limit(0, 2).find();
 console.log(res);
})();

执行命令

nodemon test.js

希望本文所述对大家node.js程序设计有所帮助。

NodeJs 相关文章推荐
使用Nodejs开发微信公众号后台服务实例
Sep 03 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 #NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 #NodeJs
nodeJs的安装与npm全局环境变量的配置详解
Jan 06 #NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 #NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 #NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 #NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 #NodeJs
You might like
基于php伪静态的实现详细介绍
2013/04/28 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
使用layui实现树形结构的方法
2019/09/20 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
使用python3构建文件传输的方法
2019/02/13 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
超级实用的8个Python列表技巧
2020/08/24 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
中国跨境电商:Tomtop
2017/03/16 全球购物
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
顶岗实习计划书
2014/01/10 职场文书
婚前协议书范本
2014/04/15 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
博士生导师推荐信
2014/07/08 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Hive导入csv文件示例
2022/06/25 数据库
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers