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教程之异步I/O
Nov 21 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 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
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
利用Python爬虫给孩子起个好名字
2017/02/14 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
使用Python函数进行模块化的实现
2019/11/15 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
本科生求职信
2014/06/17 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python
我的收音机情缘
2022/04/05 无线电