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 模块开发及发布详解分享
Mar 07 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python 日期与时间转换的方法
2020/08/01 Python
eBay奥地利站:eBay.at
2019/07/24 全球购物
经典而简洁的婚礼主持词
2014/03/13 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android
JAVA API 实用类 String详解
2021/10/05 Java/Android