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简单实现操作arduino
Sep 25 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 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
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php自定义时间转换函数示例
2016/12/07 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
表单内同名元素的控制
2006/11/22 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python中元类用法实例
2014/10/10 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python heapq使用详解及实例代码
2017/01/25 Python
Python标准库sched模块使用指南
2017/07/06 Python
Django forms组件的使用教程
2018/10/08 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
python3 简单实现组合设计模式
2020/07/02 Python
python os.rename实例用法详解
2020/12/06 Python
python的setattr函数实例用法
2020/12/16 Python
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
旷课检讨书2000字
2014/01/14 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
购房委托书范本
2014/09/18 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
休假证明书
2015/06/24 职场文书
运动会广播稿300字
2015/08/19 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python