nodejs nedb 封装库与使用方法示例
本文实例讲述了nodejsnedb封装库与使用方法。分享给大家供大家参考,具体如下:
libs/nedb.js
constDatastore=require('nedb');
functionDB(database){
letoptions={
filename:database,
autoload:true,
};
this.db=newDatastore(options);
}
DB.prototype.limit=function(offset,limit){
this.offset=offset||0;
this.limit=limit||15;
returnthis;
}
DB.prototype.sort=function(orderby){
this.orderby=orderby;
returnthis;
}
DB.prototype.find=function(query,select){
returnnewPromise((resolve,reject)=>{
letstmt=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){
returnreject(err);
}
resolve(docs);
})
})
};
DB.prototype.findOne=function(query,select){
returnnewPromise((resolve,reject)=>{
letstmt=this.db.findOne(query||{});
if(this.sort!==undefined){
stmt.sort(this.sort);
}
if(select!=undefined){
stmt.projection(select||{});
}
stmt.exec((err,doc)=>{
if(err){
returnreject(err);
}
resolve(doc);
})
})
}
DB.prototype.insert=function(values){
returnnewPromise((resolve,reject)=>{
this.db.insert(values,(err,newDoc)=>{
if(err){
returnreject(err);
}
resolve(newDoc);
})
})
}
DB.prototype.update=function(query,values,options){
returnnewPromise((resolve,reject)=>{
this.db.update(query||{},values||{},options||{},(err,numAffected)=>{
if(err){
returnreject(err);
}
resolve(numAffected);
})
});
}
DB.prototype.remove=function(query,options){
returnnewPromise((resolve,reject)=>{
this.db.remove(query||{},options||{},(err,numAffected)=>{
if(err){
returnreject(err);
}
resolve(numAffected);
})
});
}
module.exports=(database)=>{
returnnewDB(database);
}
test.js
constdb=require('./libs/nedb')('testdb');
(asyncfunction(){
awaitdb.insert({number:12});
awaitdb.insert({number:11});
awaitdb.insert({number:13});
letres=awaitdb.sort({number:-1}).limit(0,2).find();
console.log(res);
})();
执行命令
nodemontest.js
希望本文所述对大家node.js程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。