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 相关文章推荐
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
详解Nodejs之npm&package.json
Jun 15 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
基于文本的搜索
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
PHPMailer发送邮件
2016/12/28 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
python3 图片referer防盗链的实现方法
2018/03/12 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
求职简历中个人的自我评价
2013/12/25 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
面试通知短信
2015/04/20 职场文书
小学语文教学随笔
2015/08/14 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书