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 sublime text 3安装与配置
Jun 19 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 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发送post请求的三种方法
2014/02/11 PHP
php对称加密算法示例
2014/05/07 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
js实现一个简易计算器
2020/03/30 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
python能在浏览器能运行吗
2020/06/17 Python
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
农村文化活动总结
2014/08/28 职场文书
整改落实自查报告
2014/11/05 职场文书
违纪检讨书范文
2015/01/27 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
Python装饰器详细介绍
2022/03/25 Python
Python自动化实战之接口请求的实现
2022/05/30 Python