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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 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
ip签名探针
2006/10/09 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
再论Javascript的类继承
2011/03/05 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
动态创建类实例代码
2009/10/07 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
如何利用Python 进行边缘检测
2020/10/14 Python
python中pdb模块实例用法
2021/01/15 Python
python 实现图片裁剪小工具
2021/02/02 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
校园安全教育广播稿
2014/02/17 职场文书
小学端午节活动总结
2015/02/11 职场文书
出国留学英文自荐信
2015/03/25 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL