使用nodejs作为后端服务搭建web服务的话,MongoDB数据库为首选,本篇主要是为了方便node服务CURD而封装的简单方法集合,适合新手使用理解MongoDB在nodejs中的应用
本篇暂不介绍MongoDB的安装教程,请移步:https://juejin.im/post/5d525b1af265da03b31bc2d5
Mogodb介绍
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
mongodb 官方文档
https://docs.mongodb.com/manual/crud/
插件代码
import Mongodb from 'mongodb'
const MongoClient = Mongodb.MongoClient
const url = 'mongodb://@127.0.0.1:27017' // 数据库地址
/**
* @method { function } find , update , insert , remove - CURD方法
*
* @params { object } opt 统一传参
*
* @params { string } db - 必选,db name
* @params { string } table - 必选,collection name
* @params { object } query - 可选,使用查询操作符指定查询条件
* @params { object } project - 可选,使用投影操作符指定返回的键
* @params { object } sort - 可选,通过参数指定排序的字段
* @params { number } limite - 可选,读取指定数量的数据记录
* @params { number } skip - 可选,读取指定数量的数据
*
* @method { function } update 方法
* @params { object } update - 必选,更新操作语句
*/
class Database {
connect () {
return new Promise(( resolve , reject ) => MongoClient.connect(
url ,
{ useNewUrlParser : true } ,
( error , db ) => error ? reject( error ) : resolve( db )
))
}
find ( opt ) {
let db = await this.connect()
let result
if ( opt.skip >= 0 || opt.limit >= 0 )
{
let total = await new Promise(
(resolve , reject ) => db
.db( opt.db )
.collection( opt.table )
.find( opt.query )
.project( opt.project )
.count(
( error , result ) => error ? reject( error ) : resolve( result )
)
)
let list = await new Promise(
( resolve , reject ) => db
.db( opt.db )
.collection( opt.table )
.find( opt.query )
.sort( opt.sort )
.project( opt.project )
.limit( opt.limit )
.skip( opt.skip * opt.limit )
.toArray (
( error , result ) => error ? reject( error ) : resolve( result )
)
)
result = {
list ,
total ,
}
}
else
result = await new Promise(
(resolve , reject ) => db
.db( opt.db )
.collection( opt.table )
.find( opt.query )
.sort( opt.sort )
.project( opt.project )
.toArray(
( error , result ) => error ? reject( error ) : resolve( result )
)
)
db.close()
return result;
}
insert ( opt ) { //插入方法
let db = await this.connect()
let result = await new Promise(
( resolve , reject ) => db
.db( opt.db )
.collection( opt.table )
.insertOne(
opt.query ,
( error , result ) => error ? reject( error ) : resolve( result )
)
)
db.close()
return result
}
update ( opt ) { //更新方法
let db = await this.connect()
let result = await new Promise(
( resolve , reject ) => db
.db( opt.db )
.collection( opt.table )
.updateOne(
opt.query,
{ $set : opt.update },
( error : any , result : any ) => error ? reject( error ) : resolve( result )
)
)
db.close()
return result
}
remove ( opt ) { //删除方法
let db = await this.connect()
let result = await new Promise(
( resolve , reject ) => db
.db( opt.db )
.collection( opt.table )
.remove(
opt.query,
( error , result ) => error ? reject( error ) : resolve( result )
)
)
db.close()
return result
}
}
另外 MongoDB ObjectId (对象ID) nodejs操作:
const objectId = id => new Mongodb.ObjectId( id )
关于插件用法:
const db = new DataBase()
// find
db.find({
db : '',
table : '',
query : {},
skip : 3,
limit : 5,
project : { '_id' : -1, }
})
//update 更新方法
db.update({
query : {},
update : {},
})
//insert 插入方法
db.insert({
db:'',
table : '',
query : {},
})
注意事项
- e6语法环境需要打包
-
npm
引入mongodb
- 暂时没有用到
delete
方法,delete
方法与remove方法一直,单词替换即可
感谢使用!
网友评论