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程序设计有所帮助。

相关文章

  • Linux环境部署node服务并启动详细步骤

    Linux环境部署node服务并启动详细步骤

    最近用node.js开发了一个web项目,下面这篇文章主要给大家介绍了关于Linux环境部署node服务并启动的详细步骤,文中通过图文以及示例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 详解nodejs 配置文件处理方案

    详解nodejs 配置文件处理方案

    这篇文章主要介绍了详解nodejs 配置文件处理方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • npm安装依赖报错ERESOLVE unable to resolve dependency tree的解决方法

    npm安装依赖报错ERESOLVE unable to resolve dependency tree的解决方

    当我们拿到一个前端项目的时候,想要把它运行起来,首先是要给它安装依赖,下面这篇文章主要给大家介绍了关于npm安装依赖报错ERESOLVE unable to resolve dependency tree的解决方法,需要的朋友可以参考下
    2023-04-04
  • 用Node.js遍历多级目录处理文件的代码详解

    用Node.js遍历多级目录处理文件的代码详解

    在日常开发中,处理大量的文件操作是一个常见的需求,特别是在图像处理和存档管理领域,本文给大家介绍了如何用Node.js遍历多级目录处理文件,文章给出了主要步骤和完整代码,需要的朋友可以参考下
    2024-06-06
  • 从零开始学习Node.js系列教程之设置HTTP头的方法示例

    从零开始学习Node.js系列教程之设置HTTP头的方法示例

    这篇文章主要介绍了Node.js设置HTTP头的方法,详细分析了常见HTTP头的功能、原理及相关设置操作技巧,需要的朋友可以参考下
    2017-04-04
  • Nodejs本地部署DeepSeek的教程详解

    Nodejs本地部署DeepSeek的教程详解

    DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,本文主要为大家详细介绍了Nodejs本地部署DeepSeek的相关知识,需要的可以了解下
    2025-02-02
  • Node.js API详解之 string_decoder用法实例分析

    Node.js API详解之 string_decoder用法实例分析

    这篇文章主要介绍了Node.js API详解之 string_decoder用法,结合实例形式分析了Node.js API中string_decoder的功能、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • node版本切换与版本升级降级教程(win)

    node版本切换与版本升级降级教程(win)

    nvm是一个node的版本管理工具,可以简单操作node版本的切换、安装、查看,下面这篇文章主要给大家介绍了关于node版本切换与版本升级降级教程的相关资料,需要的朋友可以参考下
    2022-11-11
  • 详解nodejs爬虫程序解决gbk等中文编码问题

    详解nodejs爬虫程序解决gbk等中文编码问题

    本篇文章主要介绍了nodejs爬虫程序解决gbk等中文编码问题,解决了网页的编码与nodejs默认编码不一致造成的乱码问题,有兴趣的可以了解一下
    2017-04-04
  • 利用yarn实现一个webpack+react种子

    利用yarn实现一个webpack+react种子

    其实以前就写过如何使用React-router和Webpack快速构建一个react程序。后来发现版本太老,于是乎最近又重新组织了下结构,使用最近发布的yarn作为包管理工具,介绍下基本安装步骤,有需要的朋友们下面来一起看看吧。
    2016-10-10

最新评论