这是 db.js, mongo连接的url引入了一个向外暴露的设置文件
/**
* mongoDB 增删改查方法
* Created by nows on 2017/3/14.
*/
var mongoClient = require('mongodb').MongoClient;
var setting = require("../setting.js");
function l(n){
console.log(n);
}
/**
* 连接 mongoDB
* @param callback
* @private
*/
function _connectMd(callback){
var url = setting.dbUrl;
mongoClient.connect(url,function(err,db){
if(err){
l("mongoDB 连接失败");
return;
}
l("mongoDB 连接成功");
callback(err,db);
});
}
/**
* 增加数据
* @param obj
*/
exports.insertOne = function (obj){
_connectMd(function(err,db){
db.collection(obj.name).insertOne(obj.json,function(err,result){
if(err){
obj.callback("增加失败",null);
db.close();
return;
}
obj.callback(err,result);
db.close();
});
});
}
/**
* 删除多个匹配
* @param obj
*/
exports.deleteMany = function (obj){
_connectMd(function(err,db){
var collection = db.collection(obj.name);
collection.deleteMany(obj.json, function(err, result) {
if(err){
obj.callback("删除失败",null);
db.close();
return;
}
obj.callback(null,result);
db.close();
});
});
}
/**
* 删除一个
* @param obj
*/
exports.deleteOne = function (obj){
_connectMd(function(err,db){
var collection = db.collection(obj.name);
collection.deleteOne(obj.json, function(err, result) {
if(err){
obj.callback("删除失败",null);
db.close();
return;
}
obj.callback(null,result);
db.close();
});
});
}
/**
* 修改多个匹配
* @param obj
*/
exports.updateMany = function (obj){
_connectMd(function(err,db){
var collection = db.collection(obj.name);
collection.updateMany(obj.oldData,obj.newData,function(err,result){
if(err){
obj.callback("更新失败",null);
db.close();
return;
}
obj.callback(null,result);
db.close();
});
});
};
/**
* 修改一个
* @param obj
*/
exports.updateOne = function (obj){
_connectMd(function(err,db){
var collection = db.collection(obj.name);
collection.updateOne(obj.oldData,obj.newData,function(err,result){
if(err){
obj.callback("更新失败",null);
db.close();
return;
}
obj.callback(null,result);
db.close();
});
});
};
/**
* 查找
* @param obj
*/
exports.find = function (obj){
_connectMd(function(err,db){
// 限制数量
var pageAmount = obj.pageAmount == undefined ? 0 : obj.pageAmount;
// 第几页
var page = obj.page == undefined ? 0 : obj.page;
// 省略数量
var skip = pageAmount * page;
// 排序
var sort = obj.sort == undefined ? {} : obj.sort;
var collection = db.collection(obj.name).find(obj.json).limit(pageAmount).skip(skip).sort(sort);
collection.toArray(function(err,docs){
if(err){
obj.callback("查找失败",null);
db.close();
return;
}
obj.callback(null,docs);
db.close();
});
});
}
这是测试testMongoDB.js
/**
* mongoDB 增删改查测试
* Created by nows on 2017/3/14.
*/
var express = require("express");
var app = express();
var db = require("./model");
function l(n){
console.log(n);
}
//增加
app.get("/",function(req,res){
db.insertOne({
name:"student",
json:{
"id" : (parseInt(Math.random() * 89999999) + 10000000),
"name" : "ZhuYuan",
"age" : 22,
},
callback:function(err,result){
if(err){
res.end(err);
}
res.json(result);
}
});
});
//删除
app.get("/delete",function(req,res){
db.deleteMany({
name: "student",
json: {
id : 463575
},
callback:function(err,result){
if(err){
res.end(err);
}
res.json(result);
}
});
});
//修改
app.get("/update",function(req,res){
db.updateOne({
name:"student",
oldData:{
name:"小强"
},
newData:{
$set : {
name : "修改为: 小强"
}
},
callback:function(err,result){
if(err){
res.end(err);
}
res.json(result);
}
});
});
//查找
app.get("/find",function(req,res){
var page = req.query.page;
var getPage = page == undefined ? 0 : parseInt(page);
var result = [];
db.find({
name:"student",
json:{},
pageAmount:10, //每页的数量
page:getPage, //从每几页开始查找
callback:function(err,result){
// 不设置页数和数量默认查找所有,在数组如果中筛选,这是错误的查找
/*for(var i = 10 * page; i < 10 * (page + 1); i++){
l(i);
result.push(docs[i]);
}
res.json(result);*/
if(err){
res.end(err);
}
res.json(result);
}
});
});
app.listen(3000);
l(new Date());