1、先封装好数据库 config.js
exports.dbUrl ="mongodb://127.0.0.1:27017/pzm";
//mongodb://127.0.0.1:27017 可以在cmd 中 mongo 查看地址
//pzm 数据表名
2、 再封装db.js
var express = require("express");
var MongoClient = require("mongodb").MongoClient //安装引入 mongdb 数据库
var config = require("./config.js") //根据自己设置路径
var ObjectID = require("mongodb").ObjectID; //查询id
2.1先封装好连接数据库 //私有方法_
function _connect(cb){
MongoClient.connect(config.dbUrl,function(db){
if(!err){
cb(err,db);
}
})
}
2.2 insert插入数据方法
/* insert插入
* 表名:collectionname
* 要插入的数据:json
* 回调函数 : cb
* 格式 insert(collectionname,json,cb)
*/
exports.insert=function(collectionname,json,cb){
_connect(function(err,db){
db.collection(collectionname).insertOne(json,function(err){
cb(err);
db.close();
})
})
}
2.3 delete删除数据
/* delete删除
* 表名:collectionname
* 要删除的数据:json条件
* 回调函数 : cb
* 格式 delete(collectionname,json,cb)
*/
exports.delete=function(collectionname,json1,cb){
_connect(function(err,db){
db.collection(collectionname).deleteOne(json1,function(err){
cb(err);
})
})
}
2.4 update更新数据
/*
*update模块
* 先获取id模块
*id为json1 条件,json2为修改内容
* DB.update(collectionname,json1,json2,cb)
*
* */
exports.update=function(collectionname,json1,json2,cb){
//1、先连接数据库
_connect(function(err,db){
db.collection(collectionname).updateOne(json1,{$set:json2},function(err){
cb(err);
db.close();
})
})
}
2.5 find查询数据
/*封装 查询 分页
* json1 条件
* json2 列数
* json3 配置信息 {page,pageSize}
* 有三种情况
* 1、DB.find("news",{},function(){})
* 2、DB.find("news",{name:1},function(){})
* 3、DB.find("news",{naem:1},{page:1,pagesiez:10},function(){})
* function(collectionname,json1,json2,json3,cb)
*/
exports.find=function(collectionName,json1,json2,json3,callback){
//查询所有的时候 分页 和查询列都没有 所有回调函数为json2
if(arguments.length==3){
varcb=json2;
varcol={};/*查询的列*/
varskip=0;
varlimit=0;
}else if(arguments.length==4){
varcb=json3;
varcol=json2;/*查询的列*/
varskip=0;
varlimit=0;
}else if(arguments.length==5){
varcb=callback;
varcol=json2;/*查询的列*/
//json3={
// page,
// pageSize
//}
//10 2
varlimit=json3.pageSize||10;/*如果pageSize 每页10条*/
varskip=json3.page? (json3.page-1)*limit :0;/*page每页传显示第一页*/
}else{
console.log('传入参数错误');
return;
}
_connect(function(err,db){
varresult=db.collection(collectionName).find(json1,col).skip(skip).limit(limit);
result.toArray(function(err,data){
db.close();
cb(err,data);
})
})
}
2.6算数据数量count
//算总数
exports.count=function(collectionName,json,callback) {
_content(function(err,db) {
db.collection(collectionName).count(json,function(err,data) {
callback(err,data)
})
})
}
3、实际调用方法
调用 方法
在需要用到DB时
1、先引入
var DB = require("../../model/db.js") //引入时根据自己存放的路径 获取
查询数据 如表 news
a:查询所有
DB.find("news",{},function(err,data){})
b: 根据id
DB.find("news",{"_id":new DB.ObjectID(id)},function(err,data){})
c: 分页
先var page = req.query.page ? req.query.page : 1 //页数
var pageSize = 4; //一页多少个
DB.find("news",{},{},{page:page,pageSize:pageSize},function(err,data))
插入数据 如表 news
一般要用multiparty模块 post 获取值 (详细看前面的post传值方式)
var json = {};
DB.insert("news",josn,function(err){})
删除数据 如表 news
DB.delete("news",{"_id":new DB.ObjectID(id)},function(err){})
更新数据 如表 news
同插入一般用multiparty 模块
DB.update("news",{"_id":new DB.ObjectID(id)},function(err){})
查询数据数量 如表 news
一般和分页一起用
DB.count("news",{},function(err,data){})