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 相关文章推荐
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
图解NodeJS实现登录注册功能
Sep 16 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
php上传大文件设置方法
2016/04/14 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
用JQuery调用Session的实现代码
2010/10/29 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
python实现简易淘宝购物
2019/11/22 Python
python如何删除列为空的行
2020/07/17 Python
解决c++调用python中文乱码问题
2020/07/29 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
便利店投资创业计划书
2014/02/08 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
会计电算化实训报告
2014/11/04 职场文书
优秀高中学生评语
2014/12/30 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
高二英语教学反思
2016/03/03 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js