博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs - nedb 封装库
阅读量:6242 次
发布时间:2019-06-22

本文共 2620 字,大约阅读时间需要 8 分钟。

hot3.png

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

转载于:https://my.oschina.net/qiongtaoli/blog/994078

你可能感兴趣的文章
有没有可以共享的桌面便签?
查看>>
Mars说光场(3)— 光场采集
查看>>
24、商品列表页之数据渲染和传值
查看>>
源码分析-react3-创建dom
查看>>
C# 获取QQ好友列表信息的实现
查看>>
System.ComponentModel.Win32Exception解决方案
查看>>
设计模式之死磕策略模式(原创)
查看>>
IDEA无法导入Maven工程
查看>>
谈谈FLUX的使用
查看>>
4-Java面向对象-继承(上)
查看>>
mysql 生成随机手机号和随机中文名
查看>>
磁盘 IO 和网络 IO 该如何评估、监控、性能定位和优化?
查看>>
【iOS 开发】父视图外部子视图点击响应 - hitTest
查看>>
Android仿简书长按文章生成图片效果
查看>>
linux安装redis内存数据库
查看>>
官方实锤!微软宣布以 75 亿美元收购 GitHub
查看>>
vuejs深入浅出—基础篇
查看>>
View的绘制过程
查看>>
AI助力机器人市场,机器人升级2.0迫在眉睫
查看>>
Android Studio: Plugin with id 'android-library' not found
查看>>