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中的非阻塞方法介绍
Jun 05 NodeJs
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
nodejs文件夹深层复制功能
Sep 03 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/08 日漫
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
python实现清屏的方法
2015/04/30 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
python放大图片和画方格实现算法
2018/03/30 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
用python写爬虫简单吗
2020/07/28 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
shell程序中如何注释
2012/02/17 面试题
优秀民警事迹材料
2014/01/29 职场文书
工程专业应届生求职信
2014/02/19 职场文书
信息管理应届生求职信
2014/03/07 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python