nodejs nedb 封装库与使用方法示例

 更新时间:2020年02月06日 12:48:34   作者:李琼涛  
这篇文章主要介绍了nodejs nedb 封装库与使用方法,结合实例形式分析了nodejs nedb.js封装库的定义与使用技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 使用node操作SQLite的方法

    使用node操作SQLite的方法

    SQLite是一种轻量级的嵌入式关系型数据库管理系统,它以库的形式存在,可以嵌入到应用程序中,使用Node.js操作SQLite数据库有多种方式,其中常用的方式包括使用sqlite3模块、sequelize模块和knex模块,本文将详细的给大家介绍这几种方式,需要的朋友可以参考下
    2023-10-10
  • nodejs爬虫遇到的乱码问题汇总

    nodejs爬虫遇到的乱码问题汇总

    这篇文章主要给大家汇总介绍了作者再制作nodejs爬虫遇到的乱码问题,有相同问题的小伙伴可以参考下
    2017-04-04
  • 如何优雅地在Node应用中进行错误异常处理

    如何优雅地在Node应用中进行错误异常处理

    这篇文章主要介绍了如何优雅地在Node应用中进行错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 详细谈谈NodeJS进程是如何退出的

    详细谈谈NodeJS进程是如何退出的

    这篇文章主要给大家介绍了关于NodeJS进程是如何退出的相关资料,主要介绍了导致进程退出的三个因素:主动退出;未捕获的异常、未处理的 promise rejection;未处理的 Event Emitter error 事件 系统信号,需要的朋友可以参考下
    2021-07-07
  • 利用Node.js对文件进行重命名

    利用Node.js对文件进行重命名

    最近工作中遇到了对文件进行重命名的需求,后通过node.js实现了,所以下面这篇文章主要给大家介绍了利用Node.js对文件进行重命名的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • node-red File读取好保存实例讲解

    node-red File读取好保存实例讲解

    在本篇文章里小编给大家整理了关于node-red File读取好保存的相关知识点内容,有需要的朋友们可以参考下。
    2019-09-09
  • nodejs编写bash脚本的终极方案分享

    nodejs编写bash脚本的终极方案分享

    你懂JavaScript吗?你需要写一个Shell脚本吗?那么你应该试一下Node.js,它很容易安装,而且很适合通过写Shell脚本来学习它,下面这篇文章主要给大家介绍了关于nodejs编写bash脚本的终极方案,需要的朋友可以参考下
    2021-08-08
  • Nodejs + sequelize 实现增删改查操作

    Nodejs + sequelize 实现增删改查操作

    这篇文章主要介绍了Nodejs + sequelize 实现增删改查操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • express文件上传中间件Multer详解

    express文件上传中间件Multer详解

    multer是express官方推荐的文件上传中间件,它是在busboy的基础上开发的。目前multer的最新版本为:~1.1.0。本文将详细介绍express文件上传中间件Multer的安装与使用等,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • 详解NODEJS的http实现

    详解NODEJS的http实现

    这篇文章主要介绍了详解NODEJS的http实现的技术过程以及详细分析,需要的朋友学习参考下吧。
    2018-01-01

最新评论