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的10个性能优化技巧
Jul 15 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
主流PHP框架的优缺点对比分析
2014/12/25 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
深入Python函数编程的一些特性
2015/04/13 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
Python对列表的操作知识点详解
2019/08/20 Python
python计算导数并绘图的实例
2020/02/29 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
回门宴答谢词
2014/01/13 职场文书
文字自荐书范文
2014/02/10 职场文书
集体婚礼策划方案
2014/02/22 职场文书
自荐信的基本格式
2014/02/22 职场文书
门市房租房协议书
2014/12/04 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技