1、先封裝好數(shù)據(jù)庫 config.js
exports.dbUrl ="mongodb://127.0.0.1:27017/pzm";
//mongodb://127.0.0.1:27017? 可以在cmd 中 mongo 查看地址
//pzm? 數(shù)據(jù)表名
2、 再封裝db.js
var express = require("express");
var MongoClient = require("mongodb").MongoClient //安裝引入 mongdb 數(shù)據(jù)庫
var config = require("./config.js") //根據(jù)自己設置路徑
var ObjectID = require("mongodb").ObjectID;? //查詢id
2.1先封裝好連接數(shù)據(jù)庫 //私有方法_
function _connect(cb){
MongoClient.connect(config.dbUrl,function(db){
if(!err){
cb(err,db);
}
})
}
2.2 insert插入數(shù)據(jù)方法
/* insert插入
* 表名:collectionname
* 要插入的數(shù)據(jù):json
* 回調函數(shù) : 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刪除數(shù)據(jù)
/* delete刪除
* 表名:collectionname
* 要刪除的數(shù)據(jù):json條件
* 回調函數(shù) : 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更新數(shù)據(jù)
/*
*update模塊
* 先獲取id模塊
*id為json1 條件,json2為修改內容
* DB.update(collectionname,json1,json2,cb)
*
* */
exports.update=function(collectionname,json1,json2,cb){
//1、先連接數(shù)據(jù)庫
_connect(function(err,db){
db.collection(collectionname).updateOne(json1,{$set:json2},function(err){
cb(err);
db.close();
})
})
}
2.5 find查詢數(shù)據(jù)
/*封裝 查詢 分頁
* json1 條件
* json2? 列數(shù)
* 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){
//查詢所有的時候? 分頁 和查詢列都沒有? 所有回調函數(shù)為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('傳入?yún)?shù)錯誤');
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算數(shù)據(jù)數(shù)量count
//算總數(shù)
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") //引入時根據(jù)自己存放的路徑 獲取
查詢數(shù)據(jù) 如表 news
a:查詢所有
DB.find("news",{},function(err,data){})
b: 根據(jù)id
DB.find("news",{"_id":new DB.ObjectID(id)},function(err,data){})
c: 分頁
先var page = req.query.page ? req.query.page : 1 //頁數(shù)
var pageSize = 4; //一頁多少個
DB.find("news",{},{},{page:page,pageSize:pageSize},function(err,data))
插入數(shù)據(jù) 如表 news
一般要用multiparty模塊? post 獲取值 (詳細看前面的post傳值方式)
var json = {};
DB.insert("news",josn,function(err){})
刪除數(shù)據(jù) 如表 news
DB.delete("news",{"_id":new DB.ObjectID(id)},function(err){})
更新數(shù)據(jù) 如表 news
同插入一般用multiparty 模塊
DB.update("news",{"_id":new DB.ObjectID(id)},function(err){})
查詢數(shù)據(jù)數(shù)量? 如表 news
一般和分頁一起用
DB.count("news",{},function(err,data){})