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进程管理模块forever详解
Jun 01 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 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
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
JavaScript 学习笔记(九)call和apply方法
2010/01/11 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
本科毕业生的求职信范文
2013/11/20 职场文书
派出所所长先进事迹
2014/05/19 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
简历自荐信范文
2015/03/09 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python