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实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 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生成的一个树叶图片画图例子
2014/04/16 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
jQuery 解析xml文件
2009/08/09 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python超时重新请求解决方案
2019/10/21 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
Python networkx包的实现
2020/02/14 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
初中政治教学反思
2014/01/17 职场文书
说明书格式及范文
2014/05/07 职场文书
平面设计专业求职信
2014/08/09 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
公司晚会主持词
2019/04/17 职场文书